Chinaunix首页 | 论坛 | 博客
  • 博客访问: 174801
  • 博文数量: 65
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-16 08:59
文章分类

全部博文(65)

文章存档

2011年(3)

2010年(3)

2009年(43)

2008年(16)

我的朋友

分类: LINUX

2009-08-04 16:47:54

現在我們知道 RPM 與 SRPM 的格式分別為:
xxxxxxxxx.rpm   <==RPM 的格式,已經經過編譯且包裝完成的 rpm 檔案;
xxxxx.src.rpm   <==SRPM的格式,包含未編譯的原始碼資訊。

那麼我們怎麼知道這個軟體的版本、適用的平台、編譯釋出的次數呢?只要透過檔名就可以知道了!例如 rp-pppoe-3.1-5.i386.rpm 這的檔案的意義為:

rp-pppoe -        3.1    -     5        .i386        .rpm
軟體名稱   軟體的版本資訊 釋出的次數 適合的硬體平台 副檔名
RPM 安裝 (install) :
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
....(前面省略並保留設定值)....
0  3 * * * root /usr/bin/yum -y update

 

 




阅读(519) | 评论(0) | 转发(0) |
0

上一篇:gcc编译

下一篇:linux备份策略

给主人留下些什么吧!~~