【问题标题】:Fix permissions for rpm/setuptools packaging修复 rpm/setuptools 打包的权限
【发布时间】:2009-09-09 21:34:35
【问题描述】:

我有一个项目需要安装后挂钩进行部署。我的方法是使用 setuptools 生成骨架 rpm spec 文件并 tar 源文件。

问题是我不知道如何用这种方法控制权限。规范文件如下所示:

%install
python setup.py install --single-version-externally-managed --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES

%files -f INSTALLED_FILES
%defattr(755,%{user},%{user})

这很有效:因为所有文件都被设置为适当的用户和权限。但是这些目录没有设置属性。我不知道这是否是一个问题,但它看起来确实很奇怪:所有目录都归 root 拥有,具有 755 权限。有谁知道使user 拥有的目录的好(合理的标准)方法?我问是因为我的公司倾向于打包将在特定于应用程序的角色帐户下部署的应用程序。当我使用 setuptools 将结果放入站点包时,.pyc 文件被复制过来。但是如果我想在路径之外创建一个配置文件目录,这似乎是一个很好的解决方法。

【问题讨论】:

  • 旁注:%files -f INSTALLED_FILES 通常被认为是一种不好的做法。通过这种方式,您将获得不可靠且不可预测的 rpm 目录所有权。确实,手动列出 python 包的已安装目录/文件并不难(因为您不需要单独列出每个文件),但这简化了维护和升级,并提供了更可预测的结果。

标签: python packaging setuptools rpm


【解决方案1】:

%defattr(755,%{user},%{user})

该行设置所有文件的默认权限、用户和组所有权。您可以使用以下内容覆盖默认值:

%attr(644, <username>, <username>) </path/to/file>

如果您希望默认值由 root 以外的用户拥有,那么您可能需要在规范顶部定义“用户”宏:

%define user myusername

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多