6

我正在尝试在 Fedora 15 中创建一个 RPM 来安装我的软件,但是为了让我的软件在安装后能够正常工作,我还需要编辑系统上的其他(配置)文件、添加用户/组等。只有 root 用户才允许执行其中一些任务。我知道永远不要以 root 用户身份创建 RPM,而且我理解为什么这是个坏主意。但是,如果我将 shell 脚本语句添加到我的规范文件(%post、%prep...任何部分)以编辑必要的文件、添加用户/组等,我的 rpmbuild 命令将失败并显示消息“Permission denied”(不是出奇)。

处理这个问题的最佳方法是什么?我是否必须告诉我的用户先安装我的包,然后以 root 身份运行一个 shell 脚本来配置它?这似乎不是很优雅。我希望允许用户使用一个简单的命令(例如“yum install mysoftware”)来完成所有操作。

我的大部分研究表明,也许这甚至不应该通过 RPM 来完成。我已经阅读了Maximum RPM的许多部分,以及许多其他好的资源,但还没有找到我要找的东西。我是创建 RPM 的新手,但已经能够为我的软件成功创建一个简单的规范文件......在解压缩包并将其安装到正确位置后,我无法正确配置所有内容。非常感谢任何输入!

4

2 回答 2

8

useradd应该运行%pre并且不应该在rpmbuild. 这是标准的做法。我会推荐包装指南,特别是关于用户和组的部分。

于 2012-06-26T01:56:11.543 回答
5

%preRPM文件的部分.spec应检查安装软件所需的所有条件。
您的%postRPM.spec文件部分应进行软件运行所需的所有修改。
为避免在%post您的 RPM.spec文件部分中出现文件权限错误,您可以在该部分中设置文件权限和所有权%files。这样,安装 RPM 的用户就拥有修改配置文件的适当权限。

%install
# Copy files to directories on your installation server

%files
# Set file permissions and ownership on your installation server
%attr(775, myuser, mygroup) /path/to/my/file


%pre
# Check if custom user 'myuser' exists. If not, create it.
# Check if custom group 'mygroup' exists. If not, create it.
# All other checks here

%post
# Perform post-installation steps here, like editing other (configuration) files.
echo "Installation complete."
于 2012-06-26T20:54:05.033 回答