我在/ opt / MyApp中有一个应用程序需要使用FPM打包到RPM包中,如下所示:
fpm -e -s dir -t rpm --name 'MyApp' --version '1.0' --iteration "12345" --directories /opt/MyApp --epoch 0 /opt/MyApp
(其他选项与此无关)
MyApp中的所有文件和目录都由root(用户和组)拥有。还有一个名为" help"的目录。具有不同的权限,如
drwxrwxrwx.
即。所有用户都可以写入该目录。 当我检查FPM生成的spec文件时,它有
%defattr(-,root,root,-)
然后列出所有目录(%dir)和文件,因此我希望在此包中保留所有原始权限。但是,当我使用
进行检查时rpm -qlvp MyApp.rpm
" help"目录重置为:
drwxrwxr-x
即。其他用户不能再写那里了。 我的第一个猜测是添加选项
--rpm-use-file-permissions
但事情变得更糟,因为现在RPM中的所有文件都由名为FPM的用户拥有。
编辑: 我已经使用
取得了成果--rpm-use-file-permissions --rpm-user root --rpm-group root
但它仍然没有感觉优雅和灵活。 提前谢谢。
答案 0 :(得分:1)
关于%defattr
的评论以及缺少有关BUILDROOT
树的评论可能表示存在一些混淆。根据{{3}}:
如果不需要指定特定属性(通常是因为文件已安装且该属性设置正确),则该属性可能会用短划线替换
也就是说,如果%defattr
中没有明确的权限,则构建rpm时构建时 %install
的权限令人满意。无法保证这些匹配(或甚至兼容)以后安装rpm的实际系统。