rpmbuild不保留目录

时间:2015-06-04 13:04:40

标签: linux file-permissions rpmbuild

我在/ 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

但它仍然没有感觉优雅和灵活。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

关于%defattr的评论以及缺少有关BUILDROOT树的评论可能表示存在一些混淆。根据{{​​3}}:

  

如果不需要指定特定属性(通常是因为文件已安装且该属性设置正确),则该属性可能会用短划线替换

也就是说,如果%defattr中没有明确的权限,则构建rpm时构建时 %install 的权限令人满意。无法保证这些匹配(或甚至兼容)以后安装rpm的实际系统。