2014-08-27 58 views
0

我有什麼,我想安裝圖像的子目錄my_sw:如何從subdir創建RPM?

my_sw/ 
    usr/ 
    bin/ 
     foo 
    man/ 
     man1/ 
     foo.1 

等。我想必須有一種簡單的方法來創建一個spec文件,並使用rpmbuild將其打包爲RPM,以便其他用戶可以安裝它。我不關心rpm可以做的任何花哨的構建東西,我只是想要它安裝該dir樹。 (我想我有點濫用rpm,但這樣我的用戶就會在他們的rpm數據庫中跟蹤我的文件,他們會喜歡。)

我試過各種東西,但rpm想做的方式比我想要的要多,大多數項目都希望rpm能夠做更多事情(構建前,構建,測試,剝離等)。有沒有一個howto的地方展示瞭如何將一個簡單的rpm安裝在一起文件?

我在CentOS 5或6(或類似的RedHat)上這樣做。

+0

基於rpm的分發和版本是你的目標? – 2014-08-27 21:32:42

+0

對不起,留下了。 CentOS 5和6. – GaryO 2014-08-27 21:37:10

回答

3

是的,您可以從文件系統映像(如您所描述的)創建RPM。這是構建RPM的更簡單的例子之一,但您仍然需要使用這些工具。

的步驟大致:

1)創建RPM的建築環境中,如果您還沒有這樣做。在其最起碼的,這將是你的主目錄下的子目錄樹,像這樣:

rpm/ 
    BUILD/ 
    RPMS/ 
    x86_64/ (or whatever is the applicable arch) 
    SOURCES/ 
    SPECS/ 
    SRPMS/ 

2)創建圖像的壓縮包,並在SOURCES /目錄中刪除它。

3)在SPEC /子目錄中創建一個spec文件。有些工具可以幫助您創建一個spec文件框架。例如,如果您可以使用「rpmdevtools」軟件包(適用於CentOS 5和6),那麼您可以使用「rpmdev-newspec」。您需要填寫一些字段並提供一些(在您的情況下爲較小的)shell命令。結果可能是這樣的:

Name: my_sw 
Summary: Cool software 
Version: 1.0 
Release: 1 
Group: Applications 
License: <license> 
Source0: my_sw.tar.gz 

%description 
my_sw does awesome things that you'll really like. If you have any need for 
awesomeness, this is for you! 

%prep 
# different from the default: 
%setup -q -c -T 

%build 
# nothing to do 

%install 
# Start clean 
rm -rf %{buildroot} 
mkdir -p %{buildroot} 

# Put the files in the correct location relative to %{buildroot} 
ln -s %{buildroot} ./my_sw 
tar xzf %{S:0} 

%files 
%defattr(-,root,root,-) 
%{_bindir}/foo 
%{_mandir}/man1/foo.1 

%changelog 
* Wed Aug 27 2014 Gary O <[email protected]> 1.0-1 
- Initial spec 

一些進入最終的RPM;其餘的則告訴rpmbuild它需要做什麼的細節。

4)的rpmbuild構建:

rpmbuild -ba SPECS/my_sw.spec 

5)二元RPM將在RPMS /。源RPM將位於SRPMS /中。

我曾經找到的最好的RPM建築參考之一是Fedora項目的RPM指南:http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html。請參閱第9章。

+0

對於CentOS 5,您需要規範中的BuildRoot字段。如果你使用它來生成你的初始骨架,rpmdev-newspec將爲你創建一個合適的。 – 2014-08-27 21:47:24

+0

有關設置'BuildRoot'的指導,請參閱:https://fedoraproject.org/wiki/PackagingDrafts/SecureBuildRoot – 2014-08-27 21:50:44

+0

我相信使用home rpm構建樹時需要使用rpm宏文件來設置'_topdir'。可能也適用於CentOS 6,但我不確定。不過,我相信在CentOS 7上這不是必需的。 – 2014-08-27 21:52:49