2012-04-01 32 views
11

如果我有這條線在%文件:如何在%文件中設置目錄的所有者?

%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar 

然後my.jar將myuser的作爲所有者,但目錄/ opt/MyApp的/ lib目錄將是根所有者。 我不想寫

%attr(0555, myuser, myuser) /opt/myapp/lib/ 

,因爲我不想在/ opt/MyApp的/ lib目錄/要包含的所有文件。

如何設置/ opt/myapp/lib /目錄的所有者?

謝謝。

回答

17

我不是RPM專家..但據我所知,如下您可以使用DIR%指令:

%files 
%dir %attr(0555, myuser, myuser) /opt/myapp/lib 
%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar 

,或者更簡單:

%files 
%defattr(555,myuser,myuser,555) 
%dir /opt/myapp/lib 
/opt/myapp/lib/my.jar 

的%dir指令允許你添加目錄,但不能添加它的內容。

+1

%dir的目的是在目標機器上創建一個空目錄(如日誌目錄)。 – 2012-04-03 12:33:31

+3

不,這是不正確的。 (請參閱文檔:http://www.rpm.org/max-rpm-snapshot/s1-rpm-specref-files-list-directives.html):%dir指令用於指示RPM僅打包目錄本身,而不管在創建軟件包時哪些文件可能駐留在目錄中。 – Javaguru 2012-04-03 12:46:56

+0

@Javaguru鏈接提供404 – sebix 2017-05-30 12:35:45

2

作爲其他「超級有幫助」的人說...%dir是爲了別的。解決的辦法是使用%attr來設置你的目錄的用戶和組擁有者...因爲我已經使用%defattr將我的目錄設置爲755我使用單個破折號 - 在%attr行說.. ..事情是這樣的。

%files 
#%attr(<mode>, <user>, <group>) file 
#%defattr(file perms, user, group, dir perms) 
%defattr(644,apache,apache,755) 
%attr(-,apache,apache) /var/www/coolapp 
%attr(-,apache,apache) /var/www/coolapp/users 
%attr(-,apache,apache) /var/www/coolapp/static 
/var/www/coolapp/myDB.sqlite 
/var/www/coolapp/__init__.py 
/var/www/coolapp/settings.py 
/var/www/coolapp/urls.py 
/var/www/coolapp/wsgi.py 
相關問題