spec文件中的%pre未执行添加用户

时间:2014-03-21 20:55:47

标签: rpm rpmbuild specifications rpm-spec

我很擅长构建spec文件和rpm。 我已经看到了问题,但答案并未解决我的确切问题。

我正在创建一个Cassandra RPM来学习如何创建RPM并查看其他specfiles的过程。我有一个问题。

我的%build部分修改了对“cassandra”用户的所有权和权限。我得到了所述用户尚不存在的错误。我找到了这个页面:http://fedoraproject.org/wiki/Packaging%3aUsersAndGroups解释我应该做什么。 所以我添加了

Requires(pre): shadow-utils

还添加了%pre部分:

getent group %{owner} > /dev/null || groupadd -r %{owner}
if ! getent passwd %{owner} >/dev/null ; then
  sudo useradd -d /usr/share/%{owner} -g %{owner} -M -r %{owner}
fi
exit 0

问题是这实际上没有执行,我收到以下错误:

chown: invalid user: 'cassandra'
error: Bad exit status from /var/tmp/rpm-tmp.6HOAZx (%build)

不确定该做什么,并感谢任何帮助。 :)

由于

1 个答案:

答案 0 :(得分:2)

构建软件包时出现错误。

但是您为解决问题所做的更改位于程序包的%pre部分,该程序包在目标系统上安装时运行。

安装软件包时,您的更改可能会产生预期的影响(创建用户/组)。但是在第一次解决构建时问题之前,你无法测试它。

构建时间问题最有可能发生,因为&cassandra'用户在构建系统上不存在。在程序包构建期间,您不应尝试更改文件的所有权。而是使用%files部分中的%attr修饰符来指示文件属性。

请参阅: http://www.rpm.org/max-rpm/s1-rpm-anywhere-specifying-file-attributes.html