Linux原本隻是一個kernel,但是為什麼我們今天用的linux系統,會有很強大的功能呢,這是因為在kernel的基礎上,發行商給我們安裝了很多軟體包,使linux系統具有了豐富的功能。
Linux界軟體安裝的的兩大主流是:RPM和dpkg。dpkg最早是由Debian Linux社群開發的,RPM(Redhat Package Manager)是由redhat公司開發的,而包括Fedora,CentOS,SuSE等大的發行商都使用RPM。我們知道最初那些軟體包都是程式員用C語言或其他語言寫出來,需要經過編譯才能在我們的PC機的Linux系統上運作,如果我們每用到一個程式,就需要下載下傳源碼包,然後自己編譯(有的大程式編譯時間是非常長的),安裝,并且大多時候會出現依賴性的問題,這樣非常有局限性,并且非常麻煩。而RPM解決了我們這個問題,它是已經編譯完成的程式和設定檔案打包為RPM格式的包,并且軟體包中會提供軟體包依賴屬性等的相關詳細資訊。RPM包用rpm指令安裝的時候首先會檢測它安裝所要依賴的包是否已安裝。如果,這個軟體包所依賴的軟體包不存在,則會停止安裝,給出提示資訊讓安裝其所依賴的包。如果已經安裝,則正常安裝,并在安裝的時候将該軟體的資訊整個寫入RPM的資料庫中,便于未來的查詢,驗證和安裝。
RPM和rpm一樣嗎?是不是看的有點暈呀!RPM全稱是Redhat Package Manager即redhat軟體包管理工具,而rpm是RPM的中的一個指令,隻有root使用者才能使用,用于軟體包的安裝,查詢和更新等。
軟體包一般由四個部分組成:
1,二進制檔案 一般放
在:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin中
2,配置檔案 一般放在:/etc,/usr/local/etc中
3,庫檔案 一般放在:/lib,/usr/lib,/usr/local/lib中
4,文檔 一般放在/usr/share/docs,/usr/share/man中
軟體包的安裝方式有兩種:
1,手動編譯安裝源代碼包
2,直接安裝二進制格式的軟體包
這裡我們隻說第二種,并且是能用rpm指令安裝的RPM包。
rpm包的格式為:
name-version-release.arch.rmp
name:就是軟體包的名字
version:軟體包的版本号,一般由三位組成,分别為主版本号-次版本号-修正号。
release:發行号
arch:支援的硬體平台,一般有:
i386:支援幾乎所有的x86的CPU平台
i586:如P-I MMX CPU及AMD的K5,K6系列等。
i686:P-II以後的Intel系列
X86_64:支援64位的cpu,如Intel core2以上及AMD的Athlon64以後的cpu
noarch:表示沒有硬體平台的限制;
RPM工具中的rpm指令:
(注意:
1,下面内容我們以:httpd-2.2.3-31.el5.i386.rpm為例,有的選項隻用包的名字就行了,即這個包中的httpd,全格式反而錯誤;
2,指定這個封包件時必須是絕對路徑,由于我已經切換到CD光牒中Server目錄中,而httpd這個檔案在這個目錄中,故不需要指定路徑了)
rpm常用選項有:
-v 執行的時候顯示詳細資訊
-h 執行的時候顯示進度條
1,安裝
rpm
-i 表示安裝
-nodeps 忽略包之間的依賴關系安裝,即使安裝成功,有可能不能用
--force 強行安裝,即使安裝成功,有可能不能用
例:rpm -ivh httpd-2.2.3-31.el5.i386.rpm (必須是全格式的包名)
2,解除安裝
-e 解除安裝
-nodeps 忽略依賴關系強行解除安裝
--force 強制解除安裝
例:rpm -evh httpd
3,更新
-U 如果要更新的老版本不存在,則重新安裝這個新包;如果存在,則對此進行更新
-F 隻有要更新的老版本存在才更新
例:rpm -Uvh httpd-2.2.3-31.el5.i386.rpm(必須是全格式的包名)
4,查詢
-q 查詢軟體包(查詢是支援golobing方式的檔案名通配)
例:rpm -q httpd 查詢這個軟體包是否安裝
-qa 查詢所有已經安裝的包
-qi 顯示指定軟體包的摘要資訊(例如軟體包的安裝時間,編譯時間,大小等資訊)
例:rpm -qi httpd
-qR 顯示已安裝的軟體包的依賴包
例:rpm -qR httpd-2.2.3-31.el5.i386.rpm
-qRp 顯示本地rpm軟體包的依賴包
例:rpm -qRp httpd-2.2.3-31.el5.i386.rpm
-ql 顯示這個軟體包安裝之後生成了哪些檔案
例:rpm -ql httpd
-qc 顯示這個軟體包安裝之後生成了哪些配置檔案
例:rpm -qc httpd
-qd 顯示這個軟體包安裝之後生成了哪些文檔檔案
例:rpm -qd http
-q --scripts 顯示這個軟體包安裝時所執行的腳本
例:rpm -q --scripts httpd
-qf filename 顯示這個檔案由哪個軟體包生成的
例:rpm -qf /etc/profile
-q --changelog 顯示這個軟體包每次制作都添加了哪些功能
例:rpm -q --changelog httpd
-p 查詢一個未安裝的本地存在的rpm包的相關資訊
例:rpm -qpl httpd-2.2.3-31.el5.i386.rpm rpm -qpR httpd-2.2.3-31.el5.i386.rpm
5,校驗
rpm
-V 校驗這個軟體包所生成的檔案是否被改動過,如果被改動就會顯示出來
-Va 列出系統上所有可能被修改過的檔案
<a href="http://blog.51cto.com/attachment/201202/131726758.jpg" target="_blank"></a>
如圖所示:
紅線劃的資訊依次為:(如果這一項沒有改動,則用&ldquo;.&rdquo;顯示)
S:檔案的大小是否被改變
M:檔案的類型或檔案的屬性(rwx)是否改變
5:MD5碼的内容已經修改過
D:裝置的主次代号已經改變
L:連結路徑已經改變
U:檔案的所有者發生改變
G:檔案的屬組已經改變
T:檔案的修改時間變化
黃線劃的資訊是指定檔案的類型,有:
c:表示此檔案為配置檔案
d:表示此檔案為配置檔案
g:&ldquo;鬼&rdquo;檔案,即該檔案不被某個軟體包所包含
l:表示此檔案為授權檔案
r:表示此檔案為自述檔案
藍線表示這個軟體包生成的被改變動過的檔案
本文轉自 leejia1989 51CTO部落格,原文連結:http://blog.51cto.com/leejia/787626,如需轉載請自行聯系原作者