创建一个可以操作文件和添加用户的RPM

fla*_*ash 5 fedora rpm rpmbuild rpm-spec

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

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

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

Aar*_*sco 7

useradd应该运行,%pre不应该在期间运行rpmbuild.这是做到这一点的标准方式.我会推荐包装指南,特别是有关用户和组的部分.


小智 5

%preRPM .spec文件的该部分应检查软件安装所需的所有条件.RPM 文件的
这一%post部分.spec应该进行软件运行所需的所有修改.
要避免%postRPM .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."
Run Code Online (Sandbox Code Playgroud)