2009-09-09 70 views
1

我有一個項目需要安裝掛接部署。我的方法是使用setuptools來生成骨架rpm spec文件並對源文件進行tar處理。修復rpm/setuptools包裝的權限

問題是我不知道如何使用此方法控制權限。該規範文件如下所示:

%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擁有。有沒有人知道一個好的(合理標準)的方式來使目錄擁有user?我問,因爲我的公司傾向於選擇在特定於應用程序的角色帳戶下部署的打包應用程序。當我使用setuptools將結果放入網站包時,將複製.pyc文件。但是,如果我想創建一個配置文件目錄,這似乎是一個很好的解決方法。

+1

注意:%files -f INSTALLED_FILES通常被認爲是不好的做法。這樣您將獲得不可靠和不可預測的rpm目錄所有權。真的,手動列出python包的已安裝目錄/文件並不困難(因爲您不需要單獨列出每個文件),但這樣可以簡化維護和升級,並提供更可預測的結果。 – abbot 2009-10-21 01:16:02

回答

3

%defattr(755%{用戶},%{用戶})

即行設置的默認權限,用戶和上的所有文件組所有權。你可以像覆蓋默認:

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

如果你想在默認的根用戶以外的用戶擁有,那麼你可能需要定義在規範的頂部的「用戶」宏觀起來:

%define user myusername