SRPM:通過rpmbuild製作自己的rpm包
一、安裝工具
[yh@localhost ~]$ sudo yum install rpm
[yh@localhost ~]$ sudo yum install rpm-build
[yh@localhost ~]$ sudo yum install autoconf
因為我們最後成功製作出rpm包後,如果你要安裝它,就需要rpm命令,所以我們要安裝rpm。而要使用rpmbuild命令就要安裝rpm-build。而在製作過程中我們需要給我們自己的專案生成configure配置檔案,用它來生成Makefile,所以要安裝autoconf。
二、命令介紹
2.1、rpm命令
rpm -ivh package_name
-i :install
-v :檢視詳細的安裝資訊
-h :以安裝資訊列顯示安裝進度
2.2、rpmbuild命令
rpmbuild -ba spec_name.spec <--編譯,同時生成RPM檔案與SRPM檔案
rpmbuild -bb spec_name.spec <--編譯,僅生成RPM檔案
三、開始製作RPM包
3.1、寫一個hello.c原始碼
我們在使用者家目錄下(/home/yh)建立一個資料夾(對資料夾的命名,我個人命名為hello-1.0,即包名-版本號的格式),並在資料夾內建立一個hello.c檔案(此步應該很簡單吧)
3.2、在上一步建立的資料夾下生成configure檔案
此步可參照如下連結:使用autoconf生成Makefile並編譯工程的步驟_Linux_指令碼之家 (jb51.net)
3.3、正式開始製作
1、我們回到使用者家目錄下,我們將hello-1.0打包為.tar.gz壓縮包:
[yh@localhost ~]$tar -zcvf hello-1.0.tar.gz hello-1.0
hello-1.0.tar.gz 是你要生成的壓縮包。
hello-1.0 是你要壓縮的資料夾。
2、在使用者家目錄下使用如下命令創建制作RPM包需要的工作目錄:
[yh@localhost ~]$ rpmdev-setuptree
會生成一個rpmbuild資料夾,其下包括:
BUILD
RPMS
SOURCES
SPECS
SRPMS
3、將第一步生成的壓縮包拷貝到rpmbuild目錄下的SOURCES目錄,然後進入到rpmbuild目錄下的SPECS目錄。
4、編寫spec配置檔案:
[yh@localhost SPECS]$ vim hello.spec
spec配置檔案內容如下:
1 Name:hello 包名 2 Version:1.0 版本號 3 Release:1%{?dist} 在此版本上build過的次數 4 Summary:A test program 摘要,簡單的對此包的介紹 5 6 7 License:GPL 軟體的授權模式,GPL為自由軟體的意思 8 9 Source0:%{name}-%{version}.tar.gz 你的原始碼包 10 11 12 13 14 %description 詳細的對此包的介紹 15 A test program 16 17 %prep 準備階段,主要做的工作是解壓縮包,打補丁包,將SOURCES目錄下的壓縮包解壓到BUILD目錄下,並cd到BUILD目錄下的子目錄 18 %setup -q 19 20 21 %build 編譯階段,在BUILD目錄下的子目錄內,進行編譯,生成可執行的檔案 22 ./configure 23 make %{?_smp_mflags} 24 25 26 %install 安裝階段,將BUILD目錄下的子目錄內要安裝的內容安裝到BUILDROOT下,BUILDROOT目錄是虛擬根安裝目錄,在此階段生成。
27 rm -rf %{buildroot} 清除BUILDROOT目錄,假設你之前製作過RPM包的話,需要這一步。
28 make DESTDIR=%{buildroot} install 安裝
29
30 %files 要打進RPM包的檔案都寫在這裡,此時在BUILDROOT目錄下,用相對路徑寫。
31 /usr/local/bin 我這裡是在BUILDROOT目錄下的/usr/local/bin下有我要安裝的hello可執行檔案,所以我這樣寫,你寫的時候可能會有不同。
32
33
34 %changelog 記錄軟體曾經的更新記錄,可以不寫,但是最好寫。
5、編譯:
[yh@localhost SPECS]$ rpmbuild -ba hello.spec
我在這裡報錯了,如下:
RPM 構建錯誤:
空 %file 檔案 /home/yh/rpmbuild/BUILD/hello-1.0/debugsourcefiles.list
再次編譯:
[yh@localhost SPECS]$ rpmbuild -ba --nodebuginfo hello.spec
成功,可以在RPMS/x86_64目錄下看到.rpm包,在SRPMS目錄下看到.src.rpm包。
6、安裝:
使用rpm -ivh 包名來安裝你的.rpm包。
7、查詢:
使用rpm -qi hello檢視該軟體的基本資訊
8、執行:
[yh@localhost SRPMS]$ /usr/local/bin/hello
Hello World!
這裡你如果沒有將hello新增到PATH,需要按照上面的內容在命令列寫入,才會正確執行hello。如果你要想讓hello和ls一樣,在命令列只寫入hello就能執行的話,可以參考如下連結,將hello加入PATH:
linux-設定path,將程式加入環境變數_我是菜鳥-CSDN部落格
新增完之後,如下:
[yh@localhost SRPMS]$ hello
Hello World!
至此,我們的所有步驟就都完成了!