我正在使用平均流量。其中一个目标是设置已安装文件的用户和组,因此我使用--rpmuser
和--rpmgroup
标志。
它正在发挥作用大部分情况下,但其中一个目录未收到所需的用户/组。我已fpm
使用-e
标志运行以检查 Spec 文件。所有文件和目录都标记在%文件应设置所需用户和组的指令 -管理员用户,管理员组。
%files
%defattr(-,adminuser,admingroup,-)
# Reject config files already listed or parent directories, then prefix files
# with "/", then make sure paths with spaces are quoted. I hate rpm so much.
/etc/admin-services/admin.properties
/usr/share/admin-app/static/admin-console/index.html
/usr/share/admin-app/static/admin-console/console-env.js
/usr/share/admin-app/static/admin-console/css/styles.css
/usr/share/admin-app/webapps/admin-services.war
安装后,所有文件都属于管理员用户,管理员组 除了这在/usr/share/admin-app/static目录(以及其下的所有内容),它们都属于根,根。
我认为这不是 fpm 的错,Spec 文件看起来不错。我相信这是 rpmbuild 内部的问题。知道可能发生了什么吗?
我已经读完了Spec Files 上的文档,我看不出有任何其他指令可能会影响在/usr/share/admin-app/static目录。
答案1
您应该使用该--directories
选项。来自fpm --help
:
--directories DIRECTORIES Recursively mark a directory as being owned by the package
如果没有它,则仅为文件设置所有权,目录将被省略并且将属于root:root
。
如果您添加--directories /usr/share/admin-app/static
并使用fpm -e
查看规范文件,您将看到它添加了%dir
明确设置权限的指令,正如您期望的那样:
%dir %attr(775, adminuser, admingroup) /usr/share/admin-app/static
以及该路径下的子目录的其他条目(如果有)。
另外,如果你有多个目录在你的 rpm 的根目录中(就像我做的那样),你必须--directories
为每个文件使用一个选项。
这有点令人困惑,但我们要感谢 rpm,而不是 fpm 的错。