修复rpm/setuptools打包的权限问题
我有一个项目,需要在部署后执行一些挂钩操作。我的方法是使用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})
这样做效果还不错:所有文件都被设置为合适的用户和权限。但是,目录的属性没有被设置。我不确定这是不是个问题,但看起来有点奇怪:所有目录都是由root用户拥有,并且权限是755。有没有人知道一个好的(比较标准的)方法来让这些目录归user
所有?我问这个是因为我公司通常喜欢打包那些会在特定角色账户下部署的应用程序。当我使用setuptools把结果放到site-packages时,.pyc
文件会被复制过来。但如果我想在路径下创建一个配置文件目录,似乎需要做很多额外的工作。
1 个回答
3
%defattr(755,%{user},%{user})
这一行代码是用来设置所有文件的默认权限、用户和组的归属。你可以用类似下面的代码来覆盖这个默认设置:
%attr(644, <username>, <username>) </path/to/file>
如果你希望默认的文件归某个不是root的用户所有,那么你可能需要在规格文件的顶部定义一个叫做'user'的宏:
%define user myusername