内容提要
本文介绍了在Redhat系发行版上打包软件的过程与Archlinux的区别,包括构建命令、目录结构、自动安装依赖和撤销命令效果等。作者建议使用rpmbuild-wrapper脚本实现以makepkg方式打开rpmbuild的目标。
关键要点
-
Redhat 系发行版与 Archlinux 在软件打包思路上存在显著差异。
-
Fedora 的 rpmbuild 默认在 $HOME/rpmbuild 下构建,使用 rpmdev-setuptree 创建必要目录。
-
rpmbuild 目录结构包括 BUILD、BUILDROOT、RPMS、SOURCES、SPECS 和 SRPMS。
-
Archlinux 的构建目录结构更为简洁,每个软件包有独立目录,包含 PKGBUILD 文件和源文件。
-
可以通过修改 $HOME/.rpmmacros 来改变 rpmbuild 的默认目录结构,以便更像 Archlinux 的方式。
-
Fedora 的 rpmbuild 不支持自动安装依赖,但可以使用 dnf 的 builddep 命令。
-
构建完成后可以使用 dnf history undo 撤销安装的依赖,但可能会遇到版本问题。
-
rpmbuild 不支持自动下载源文件,可以使用 --undefine=_disable_source_fetch 或 spectool 命令实现。
-
rpmbuild 的构建行为与 makepkg 不同,使用 -bb 选项可以构建最终安装包。
-
建议创建 rpmbuild-wrapper 脚本以实现类似 makepkg 的功能。
延伸问答
Archlinux 和 Redhat 系发行版在软件打包上有什么主要区别?
Archlinux 的构建目录结构更为简洁,每个软件包有独立目录,而 Redhat 系的 rpmbuild 则在统一的 rpmbuild 目录下构建,包含多个子目录。
如何在 Fedora 中使用 rpmbuild 创建类似 Archlinux 的目录结构?
可以通过修改 $HOME/.rpmmacros 文件,重新定义 %_topdir 和其他相关宏,以实现类似 Archlinux 的目录结构。
Fedora 的 rpmbuild 如何处理依赖安装?
Fedora 的 rpmbuild 不支持自动安装依赖,但可以使用 dnf 的 builddep 命令手动安装依赖。
如何撤销在 Fedora 中安装的依赖?
可以使用 dnf history undo 命令撤销安装的依赖,但可能会遇到版本问题。
rpmbuild 是否支持自动下载源文件?
rpmbuild 默认不支持自动下载源文件,但可以使用 --undefine=_disable_source_fetch 选项或 spectool 命令来实现。
rpmbuild 和 makepkg 的构建行为有什么不同?
makepkg 默认只构建最终的安装包,而 rpmbuild 使用 -bb 选项可以构建最终安装包和源包。