我有一个项目需要安装后 Hook 才能进行部署。我的方法是使用setuptools生成框架rpm规范文件并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})
效果相当好:所有文件都设置为适当的用户和权限。但目录没有设置属性。我不知道这是否是一个问题,但它看起来确实很奇怪:所有目录都由具有 755 权限的 root 拥有。有谁知道一种好的(合理标准的)方法来使目录归用户所有?我问这个问题是因为我的公司倾向于打包将在特定于应用程序的角色帐户下部署的应用程序。当我使用 setuptools 将结果放入站点包中时,.pyc
文件将被复制。但如果我想在路径之外创建一个配置文件目录,这似乎是一个很好的解决方法。
最佳答案
%defattr(755,%{user},%{user})
该行设置所有文件的默认权限、用户和组所有权。您可以使用以下内容覆盖默认值:
%attr(644, <username>, <username>) </path/to/file>
如果您希望默认值由 root 以外的用户拥有,那么您可能需要在规范顶部定义“user”宏:
%define user myusername
关于python - 修复 rpm/setuptools 打包的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1402224/