4

我有一个定制的 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,即使我将 coreutils 指定为Requires:.

所以,我修改后的问题是标题:如何在coreutils之后强制安装我的包?

4

2 回答 2

3

@Justin,你很幸运,如果它在同一个事务中,anaconda 仍然可以以不同的顺序安装它们。你需要的是:

Requires: coreutils
Requires(post): coreutils

这样 anaconda/rpm 将确保在运行 %post 之前安装核心实用程序。

于 2011-07-17T00:12:47.853 回答
2

我的规范文件中有错误。我在序言中指定了 Requires: 行,而不是在 %package 部分。这修复了它:

%package server
Summary: Server component
Group: Extras
Requires: coreutils
于 2011-06-03T22:23:34.710 回答