我的任务是设置一个 RHEL 5.x 构建主机,它可以为普通用户构建 RPM。
在 rpm 版本为 4.8 的 RHEL 6.x 上,我有/usr/lib/macros
:
# Path to top of build area.
%_topdir %{getenv:HOME}/rpmbuild
在 rpm 版本为 4.4 的 RHEL 5.x 上,%{getevn:HOME} 不可用。
我知道我可以使用/home/someuser/.rpmmacros
:
%_topdir /home/someuser/rpmbuild
这对那个用户来说有效,但是我不想对每个用户单独执行此操作。此外,由于.rpmmacro
不会扩展${HOME}
,或者~
我怀疑使用这些是不安全的。这反过来会使/etc/skel
这项任务不稳定(至少我怀疑如此)。
简而言之,我的问题是:如何设置 RHEL 5.x 主机以允许所有用户在其主目录中构建 RPM 包?
答案1
在我的.rpmmacros
RHEL5 上我使用
%_topdir %(echo ${HOME}/rpm)
如果您不想设置模拟(但我也建议这样做)这可能会有所帮助。
答案2
如果可能的话,请将您的构建服务器设为 EL6。这将为您节省很多麻烦...
对于仅偶尔构建 RPM 包的简单构建框,请让您的用户使用mock
。您可以在 EPEL 存储库中找到它。
使用mock
构建 RPM 可确保通过在 chroot 环境中构建它来指定所有正确的构建依赖项。
添加应该能够访问mock
该mock
组的用户。
然后这些用户可以使用以下命令构建 RPM:
mock -r epel-5-x86_64 file.src.rpm
如果你需要建立一个很多RPM,或者你正在创建一个存储库,你可能需要设置一个自动构建服务器,例如麹。