2013-08-28 36 views
2

允許在規格文件中多次使用%defattr?在Ubuntu 10(rpm版本4.7.1)下,以下定義將導致適用於/var/log/testdir2的777權限。%轉速4.7.2和4.9.1之間的defattr行爲變化?

%files 
%defattr(-,root,root,-) 
%dir /var/log/testdir1 
%defattr(777,root,root,-) 
%dir /var/log/testdir2 
%dir %attr(777,root,root) /var/log/testdir3 

升級到Ubuntu 12.04.1(x86_64RPM版本4.9.1.1),再生用相同的規格文件rpm和部署到同一目標機器之後導致/無功/日誌/ testdir2具有權限755 。我必須更改spec文件以定義%attr,如上面的/var/log/testdir3以獲得所需的權限。

規範文件有一個%defattr定義,後跟一組具有這些權限的文件,然後是另一個%defattr定義,後面是具有這些權限的一組文件。這是不允許的?或者,在權限方面如何處理目錄和文件有什麼區別?

回答

3

%defattr通常用於設置文件/目錄的默認屬性,所以多次使用它對我來說似乎很奇怪。首先讓我們看看%defattr的值:%defattr(file perms, user, group, dir perms)。所以可能是/ var/log/testdir3目錄在你的tarball中擁有755的權限,因爲你沒有設置目錄權限,它只是繼承它們。

嘗試是這樣的:

%files 
%defattr(755,root,root,777) 
%dir /var/log/testdir1 
%dir /var/log/testdir2 
%dir /var/log/testdir3 

使用上面我所,它將設置目錄爲777,然後設置您列出爲755,因爲它繼承了默認值(均與所有權有關的全部文件root.root)。

對於爲什麼要將日誌目錄上的權限設置爲777,我還是有點困惑,因爲當您聲明%dir時,它只設置目錄權限。你不是試圖設置文件的東西?如果您需要具有不同權限的特定目錄,則應使用%attr屬性。

+0

感謝您的回覆。你是對的,設置第4個參數,目錄權限,正在做我想要的。我有不同的權限的目錄組(包含沒有文件)。每個組都以不同的%defattr設置作爲前綴。在最近的os升級(rpmbuild的新版本)後,我的rpm的行爲發生了變化,但似乎我可能沒有正確使用%defattr。謝謝。 – Glenn

+0

真棒很高興看到你的工作! – Forrest

相關問題