亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

自己制作rpm軟件包(1)

系統 2070 0

http://www.linuxfly.org/post/130/

?我們都知道,在目前的Linux環境下,要安裝新軟件,通常有兩種方式:一是使用源碼安裝;二是使用rpm軟件包。使用源碼安裝可以讓用戶了解編譯過 程,及定制一些模塊,和修改編譯參數,但其工作量通常都很大,而且要求用戶有足夠的計算機知識。而rpm軟件包方式則相對來說比較簡單,也易于管理和升 級。所以,當前Linux發行版的前十中,有八個都是使用基于二進制軟件包方式的(deb和rpm格式可以互轉)。同樣的,紅旗也是基于rpm的打包方 式。
? 下面要寫的,就是如何制作自己的rpm包。這通常是為了減輕工作上帶來的麻煩,例如分發軟件到客戶手上,或統一版本升級等。
一、關于rpm包

引用
1、rpm包:簡單來說,就是把已經編譯好的二進制代碼整合到一個文件里面, 并且加入一些判斷,如安裝位置、依賴或沖突的軟件包、安裝前或后自動運行的腳本等等;
2、兼容性:由于rpm包在制作的時候,是在特定的發行版或硬件上編譯的,所以, 不同發行版、或同一發行版不同版本號的rpm包一般都是不能互相兼容的 ,甚至由于spec宏的問題,使用.src.rpm編譯也未必可以成功;
3、大部分的軟件作者在發布源代碼的同時,也會提供rpm或.spec文件,除非沒有.spec文件,否則不建議自行編寫,并且在編寫的時候, 應使用標準宏 ,以提高可讀性。


二、準備工作
在編譯RPM前,需要簡單了解一下編譯時使用到的目錄。

引用
[root@ftpserver asianux]# pwd
/usr/src/asianux


這個是紅旗上編譯RPM時使用的根目錄。(自定義%_topdir不算,下面會提到)

引用
[root@ftpserver asianux]# ll
total 40
drwxr-xr-x ?2 root root 4096 May 31 13:21 BUILD
drwxr-xr-x ?8 root root 4096 Apr ?6 00:08 RPMS
drwxr-xr-x ?2 root root 4096 May 31 13:21 SOURCES
drwxr-xr-x ?2 root root 4096 May 31 13:21 SPECS
drwxr-xr-x ?2 root root 4096 Nov 30 ?2006 SRPMS


這些是編譯時使用到的目錄,其作用如下:

引用
BUILD - 編譯時的工作目錄,包括解壓和make都會放到這里
RPMS ?- 根據硬件平臺的不同,存放最后生成的RPM軟件包
SOURCES - 存放源碼包的地方,源碼必須以.tar.gz方式打包好
SPECS - 存放編譯RPM時的.spec腳本
SRPMS - 存放編譯好的.src.rpm軟件包


※有一種說法,就是不建議使用root用戶去編譯RPM包,而上述目錄都必須使用root用戶才能讀寫的。 所以,我們可以使用下面的方式在用戶主目錄中創建一系列準備目錄:

echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros
mkdir $HOME/rpm
mkdir $HOME/rpm/SOURCES
mkdir $HOME/rpm/SPECS
mkdir $HOME/rpm/BUILD
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386


那今后,你就可以用對應的用戶在這些目錄上編譯RPM包了。 (小心,有些軟件的rpm必須使用root編譯)
※避免生成 debuginfo 包
打 包過程默認會創建 debuginfo 包。大部分情況下,打包的軟件已經是穩定版,我們并不需要調試程序,而普通用戶也沒有能力調試,所以每次都生成 debuginfo 包就顯得沒有太大必要了。我們可以創建一個自己家目錄下的 rpm 配置文件 .rpmmacros,寫入一行定義來禁止打包過程生成 debuginfo 包:

引用
echo '%debug_package %{nil}' >> ~/.rpmmacros


三、編譯rpm
我們先以clamav軟件包為例,從下面可以找到.src.rpm或.spec文件,有了這兩個文件,要生成rpm包通常都是很簡單的。
下載地址: 點擊
1、存放到對應的路徑

cd SOURCES/
wget http://dag.wieers.com/rpm/packages/clamav/clamav-0.90.2-2.rf.src.rpm


2、開始編譯

rpmbuild --rebuild clamav-0.90.2-2.rf.src.rpm


這個通常都是結尾部分,提示生成的rpm放在哪里:

引用
......
Wrote: /usr/src/asianux/RPMS/i386/clamav-0.90.2-2.rf.i386.rpm
Wrote: /usr/src/asianux/RPMS/i386/clamd-0.90.2-2.rf.i386.rpm
Wrote: /usr/src/asianux/RPMS/i386/clamav-db-0.90.2-2.rf.i386.rpm
Wrote: /usr/src/asianux/RPMS/i386/clamav-devel-0.90.2-2.rf.i386.rpm
Wrote: /usr/src/asianux/RPMS/i386/clamav-debuginfo-0.90.2-2.rf.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.73550
+ umask 022
+ cd /usr/src/asianux/BUILD
+ cd clamav-0.90.2
+ /bin/rm -rf /var/tmp/clamav-0.90.2-2.rf-root
+ exit 0
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.73550
+ umask 022
+ cd /usr/src/asianux/BUILD
+ rm -rf clamav-0.90.2
+ exit 0


3、生成的rpm會放在這里

引用
[root@ftpserver asianux]# ll /usr/src/asianux/RPMS/
total 11176
-rw-r--r-- ?1 root root ?748454 Jun ?1 16:04 clamav-0.90.2-2.rf.i386.rpm
-rw-r--r-- ?1 root root 9503667 Jun ?1 16:04 clamav-db-0.90.2-2.rf.i386.rpm
-rw-r--r-- ?1 root root ?838685 Jun ?1 16:04 clamav-debuginfo-0.90.2-2.rf.i386.rpm
-rw-r--r-- ?1 root root ?238038 Jun ?1 16:04 clamav-devel-0.90.2-2.rf.i386.rpm
-rw-r--r-- ?1 root root ? 73708 Jun ?1 16:04 clamd-0.90.2-2.rf.i386.rpm


4、可以關注一下.src.rpm的內容,下一日志教程中會用到

引用
# cp clamav-0.90.2-2.rf.src.rpm /tmp
# cd /tmp
# rpm2cpio clamav-0.90.2-2.rf.src.rpm |cpio -idvm
clamav-0.90.2.tar.gz
clamav-milter.init
clamav.init
clamav.spec


可以看到,其實.src.rpm中就存放有:

引用
clamav-0.90.2.tar.gz - 源代碼.tar.gz - 對應放在SOURCES目錄 -解壓后會放在BUILD目錄
clamav.spec - 生成rpm的.spec腳本文件 - 對應放在SPECS目錄
clamav-milter.init -初始化文件 - 在生成rpm的過程中,會放在BUILD目錄
clamav.init -初始化文件- 在生成rpm的過程中,會放在BUILD目錄


生成rpm的過程會進行上述的操作,只是在最后執行%clean時,所有臨時文件被清空而已。
※舊的發行版,或者說舊的rpm套件,會使用類似rpm --rebuild進行rpm的生成工作。而在新的版本中,通常都是獨立開來的。例如,在紅旗上使用的就是:

引用
# rpm -qa|grep rpm-build
rpm-build-4.3.3-18_nonptl.2AX


有幾個常用的參數可以了解一下:

引用
# rpmbuild --help
--rebuild ? ?從 構建二進制軟件包
-ba ? ? ? ? ? ?從 構建源碼和二進制軟件包
-bb ? ? ? ? ? ?從 只構建二進制軟件包
-bs ? ? ? ? ? ?從 只構建源碼軟件包
-ta ? ? ? ? ? ? 從 構建源碼和二進制軟件包
-tb ? ? ? ? ? ? 從 只構建二進制軟件包
-ts ? ? ? ? ? ? 從 只構建源碼軟件包


標識如下:

引用
指的是.src.rpm
指得是.spec
指得是把源代碼打包成的.tar.gz格式
構建源碼包 指生成.src.rpm(也就是通過.tar.gz和.spec生成)
構建二進制軟件包 指生成最后的.rpm
?

自己制作rpm軟件包(1)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 在线视频久久 | 同性女女黄h片在线播放 | 久久香蕉国产线看观看精品yw | 亚洲精品一区二区三区不卡 | 国产成人精品久久一区二区小说 | 日本一级毛片免费 | 亚洲 欧美 日韩在线综合福利 | 成人国产亚洲欧美成人综合网 | 狠狠色香婷婷久久亚洲精品 | 成人在线视频网址 | 精品国产亚洲一区二区三区 | 久久综合九色综合97婷婷群聊 | 日韩视频大全 | 成人欧美视频免费看黄黄 | 乱人伦中文字幕在线看 | 国产精亚洲视频 | 国产亚洲综合久久 | 日日操操 | 欧美一级毛片不卡免费观看 | 精品国产免费人成高清 | 精品色视频 | 中国漂亮护士一级毛片 | 婷婷99精品国产97久久综合 | 中文字幕亚洲综合久久男男 | 久久久午夜精品 | 亚洲欧美中文字幕 | 久久99精品国产自在现线小黄鸭 | 欧美日韩一级大片 | 日本夜爽爽一区二区三区 | 国产小视频91 | 天天干夜夜操视频 | 99精品一区二区三区 | 国产精品一区在线免费观看 | 天天干夜夜操美女 | 孕妇孕妇aaaaa级毛片视频 | 亚洲 在线播放 | 欧美精品日本一级特黄 | 国产成人精品在线观看 | 日韩精品一区二区三区四区 | 久久久久久久久久福利 | 在线看日本a毛片 |