💡
原文中文,约2500字,阅读约需6分钟。
📝
内容提要
本文介绍了在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 的功能。
➡️