rpm and srpm
时间:2009-08-04 来源:boypicc
現在我們知道 RPM 與 SRPM 的格式分別為:
RPM 安裝 (install) :
root@www ~]# rpm -ivh package_name
選項與參數:
-i :install 的意思
-v :察看更細部的安裝資訊畫面
-h :以安裝資訊列顯示安裝進度
(
)
RPM 升級與更新 (upgrade/freshen) :
RPM 查詢 (query)
root@www ~]# rpm -qa <==已安裝軟體
[root@www ~]# rpm -q[licdR] 已安裝的軟體名稱 <==已安裝軟體
[root@www ~]# rpm -qf 存在於系統上面的某個檔名 <==已安裝軟體
[root@www ~]# rpm -qp[licdR] 未安裝的某個檔案名稱 <==查閱RPM檔案
選項與參數:
查詢已安裝軟體的資訊:
-q :僅查詢,後面接的軟體名稱是否有安裝;
-qa :列出所有的,已經安裝在本機 Linux 系統上面的所有軟體名稱;
-qi :列出該軟體的詳細資訊 (information),包含開發商、版本與說明等;
-ql :列出該軟體所有的檔案與目錄所在完整檔名 (list);
-qc :列出該軟體的所有設定檔 (找出在 /etc/ 底下的檔名而已)
-qd :列出該軟體的所有說明檔 (找出與 man 有關的檔案而已)
-qR :列出與該軟體有關的相依軟體所含的檔案 (Required 的意思)
-qf :由後面接的檔案名稱,找出該檔案屬於哪一個已安裝的軟體;
查詢某個 RPM 檔案內含有的資訊:
-qp[icdlR]:注意 -qp 後面接的所有參數以上面的說明一致。但用途僅在於找出
某個 RPM 檔案內的資訊,而非已安裝的軟體資訊!注意!
RPM 驗證與數位簽章 (Verify/signature) :
root@www ~]# rpm -Va
[root@www ~]# rpm -V 已安裝的軟體名稱
[root@www ~]# rpm -Vp 某個 RPM 檔案的檔名
[root@www ~]# rpm -Vf 在系統上面的某個檔案
選項與參數:
-V :後面加的是軟體名稱,若該軟體所含的檔案被更動過,才會列出來;
-Va :列出目前系統上面所有可能被更動過的檔案;
-Vp :後面加的是檔案名稱,列出該軟體內可能被更動過的檔案;
-Vf :列出某個檔案是否被更動過~
範例一:列出你的 Linux 內的 logrotate 這個軟體是否被更動過?
[root@www ~]# rpm -V logrotate
# 如果沒有出現任何訊息,恭喜你,該軟體所提供的檔案沒有被更動過。
# 如果有出現任何訊息,才是有出現狀況啊!
範例二:查詢一下,你的 /etc/crontab 是否有被更動過?
[root@www ~]# rpm -Vf /etc/crontab
S.5....T c /etc/crontab
# 瞧!因為有被更動過,所以會列出被更動過的資訊類型!
SRPM 的使用 : rpmbuild
SRPM 使用的路徑與需要的軟體 :
SRPM 的編譯指令 (-ba/-bb)
xxxxxxxxx.rpm <==RPM 的格式,已經經過編譯且包裝完成的 rpm 檔案; xxxxx.src.rpm <==SRPM的格式,包含未編譯的原始碼資訊。 |
那麼我們怎麼知道這個軟體的版本、適用的平台、編譯釋出的次數呢?只要透過檔名就可以知道了!例如 rp-pppoe-3.1-5.i386.rpm 這的檔案的意義為:
rp-pppoe - 3.1 - 5 .i386 .rpm 軟體名稱 軟體的版本資訊 釋出的次數 適合的硬體平台 副檔名
|
root@www ~]# rpm -ivh package_name
選項與參數:
-i :install 的意思
-v :察看更細部的安裝資訊畫面
-h :以安裝資訊列顯示安裝進度
(
--test |
使用時機: 想要測試一下該軟體是否可以被安裝到使用者的 Linux 環境當中,可找出是否有屬性相依的問題。範例為: rpm -ivh pkgname.i386.rpm --test |
RPM 升級與更新 (upgrade/freshen) :
-Uvh | 後面接的軟體即使沒有安裝過,則系統將予以直接安裝; 若後面接的軟體有安裝過舊版,則系統自動更新至新版; |
-Fvh | 如果後面接的軟體並未安裝到你的 Linux 系統上,則該軟體不會被安裝;亦即只有已安裝至你 Linux 系統內的軟體會被『升級』! |
RPM 查詢 (query)
root@www ~]# rpm -qa <==已安裝軟體
[root@www ~]# rpm -q[licdR] 已安裝的軟體名稱 <==已安裝軟體
[root@www ~]# rpm -qf 存在於系統上面的某個檔名 <==已安裝軟體
[root@www ~]# rpm -qp[licdR] 未安裝的某個檔案名稱 <==查閱RPM檔案
選項與參數:
查詢已安裝軟體的資訊:
-q :僅查詢,後面接的軟體名稱是否有安裝;
-qa :列出所有的,已經安裝在本機 Linux 系統上面的所有軟體名稱;
-qi :列出該軟體的詳細資訊 (information),包含開發商、版本與說明等;
-ql :列出該軟體所有的檔案與目錄所在完整檔名 (list);
-qc :列出該軟體的所有設定檔 (找出在 /etc/ 底下的檔名而已)
-qd :列出該軟體的所有說明檔 (找出與 man 有關的檔案而已)
-qR :列出與該軟體有關的相依軟體所含的檔案 (Required 的意思)
-qf :由後面接的檔案名稱,找出該檔案屬於哪一個已安裝的軟體;
查詢某個 RPM 檔案內含有的資訊:
-qp[icdlR]:注意 -qp 後面接的所有參數以上面的說明一致。但用途僅在於找出
某個 RPM 檔案內的資訊,而非已安裝的軟體資訊!注意!
RPM 驗證與數位簽章 (Verify/signature) :
root@www ~]# rpm -Va
[root@www ~]# rpm -V 已安裝的軟體名稱
[root@www ~]# rpm -Vp 某個 RPM 檔案的檔名
[root@www ~]# rpm -Vf 在系統上面的某個檔案
選項與參數:
-V :後面加的是軟體名稱,若該軟體所含的檔案被更動過,才會列出來;
-Va :列出目前系統上面所有可能被更動過的檔案;
-Vp :後面加的是檔案名稱,列出該軟體內可能被更動過的檔案;
-Vf :列出某個檔案是否被更動過~
範例一:列出你的 Linux 內的 logrotate 這個軟體是否被更動過?
[root@www ~]# rpm -V logrotate
# 如果沒有出現任何訊息,恭喜你,該軟體所提供的檔案沒有被更動過。
# 如果有出現任何訊息,才是有出現狀況啊!
範例二:查詢一下,你的 /etc/crontab 是否有被更動過?
[root@www ~]# rpm -Vf /etc/crontab
S.5....T c /etc/crontab
# 瞧!因為有被更動過,所以會列出被更動過的資訊類型!
由於 RPM 檔案常常會安裝/移除/升級等,某些動作或許可能會導致 RPM 資料庫 /var/lib/rpm/ 內的檔案破損。果真如此的話,那你該如何是好?別擔心,我們可以使用 --rebuilddb 這個選項來重建一下資料庫喔! 作法如下:
[root@www ~]# rpm --rebuilddb <==重建資料庫
|
SRPM 的使用 : rpmbuild
假設我下載了一個 SRPM 的檔案,又不想要修訂這個檔案內的原始碼與相關的設定值, 那麼我可以直接編譯並安裝嗎?當然可以!利用 rpmbuild 配合選項即可。選項主要有底下兩個:
rebuild |
這個選項會將後面的 SRPM 進行『編譯』與『打包』的動作,最後會產生 RPM 的檔案,但是產生的 RPM 檔案並沒有安裝到系統上。當你使用 --rebuild 的時候,最後通常會發現一行字體: Wrote: /usr/src/redhat/RPMS/i386/pkgname.i386.rpm 這個就是編譯完成的 RPM 檔案囉!這個檔案就可以用來安裝啦!安裝的時候請加絕對路徑來安裝即可! |
--recompile | 這個動作會直接的『編譯』『打包』並且『安裝』囉!請注意, rebuild 僅『編譯並打包』而已,而 recompile 不但進行編譯跟打包,還同時進行『安裝』了! |
SRPM 使用的路徑與需要的軟體 :
/usr/src/redhat/SPECS | 這個目錄當中放置的是該軟體的設定檔,例如這個軟體的資訊參數、設定項目等等都放置在這裡; |
/usr/src/redhat/SOURCES | 這個目錄當中放置的是該軟體的原始檔 (*.tar.gz 的檔案) 以及 config 這個設定檔; |
/usr/src/redhat/BUILD | 在編譯的過程中,有些暫存的資料都會放置在這個目錄當中; |
/usr/src/redhat/RPMS | 經過編譯之後,並且順利的編譯成功之後,將打包完成的檔案放置在這個目錄當中。裡頭有包含了 i386, i586, i686, noarch.... 等等的次目錄。 |
/usr/src/redhat/SRPMS | 與 RPMS 內相似的,這裡放置的就是 SRPM 封裝的檔案囉!有時候你想要將你的軟體用 SRPM 的方式釋出時, 你的 SRPM 檔案就會放置在這個目錄中了。 |
SRPM 的編譯指令 (-ba/-bb)
要將在 /usr/src/redhat 底下的資料編譯或者是單純的打包成為 RPM 或 SRPM 時,就需要 rpmbuile 指令與相關選項的幫忙了!我們只介紹兩個常用的選項給您瞭解一下:
[root@www ~]# rpmbuild -ba rp-pppoe.spec <==編譯並同時產生 RPM 與 SRPM 檔案 [root@www ~]# rpmbuild -bb rp-pppoe.spec <==僅編譯成 RPM 檔案 全系統自動升級
root@www ~]# vim /etc/crontab
|
相关阅读 更多 +