我有一个定制的RPM,可以构建一组子包。每个子包在spec文件中都有一个%post脚本,用于将一些符号链接复制到另一个文件夹:
%post server
echo "Copying symlinks..." >> /tmp/mystuff.log
pwd >> /tmp/mystuff.log
cp -av /etc/mystuff/symlinks/server/current /etc/mystuff/ >> /tmp/splashtheme.log 2>&1
当我在正在运行的系统上安装其中一个子包RPM时,它可以正常工作。当我通过Anaconda安装它(作为Kickstart软件包列表的一部分)时,RPM的安装后脚本似乎没有运行。
修改 事实证明,他们实际上做运行,但我收到的错误是:
/var/tmp/rpm-tmp.48901: line 3: cp: command not found
显然,Anaconda正在尝试在安装coreutils之前安装我的RPM,即使我在Requires:
中指定coreutils作为依赖项。
所以,我修改过的问题是标题:如何在 coreutils之后强制我的软件包安装?
答案 0 :(得分:3)
Requires: coreutils
Requires(post): coreutils
这样anaconda / rpm将确保在运行%post之前安装核心工具。
答案 1 :(得分:2)
我的specfile中有错误。我在前导码中指定了Requires:行,而不是在%package部分中。这修好了它:
%package server
Summary: Server component
Group: Extras
Requires: coreutils