標籤:主要介紹如何使用rpm來安裝、查詢、升級、卸載、校正資料包的正確性和重建資料庫
目前linux界管理軟體有2種方式,一是使用dpt來管理,二是使用RPM來管理
dpt使用Debian linxu社區開發的,目前使用dpt來管理的發行商包括:B2D,Ubuntu等。
而RPM是有Red Hat公司開發出來的,目前使用RPM來管理軟體的發行商包括:Fedora、CentOS、SuSE等。
由於當前最主流的軟體包管理大多使用RPM來管理的,因此在這裡我們只介紹如何使用RPM來管理軟體包
什麼是RPM呢?
RPM:全名是RedHat Package Manager,簡稱RPM,他是以一種資料庫記錄的方式將你所需要的軟體安裝到你的linux系統上的一套管理機制。也就是安裝某個軟體時,該軟體的資訊全部寫入到了RPM資料庫中,以後關於該軟體包的升級、卸載、以及校正等操作都是根據RPM資料庫中的資料來進行的。
RPM軟體包的命名規則:
name-version-release.arch.rpm
軟體名稱-版本號碼-發行次數.操作平台.rpm
其中版本號碼分為主要版本號和次版本號碼
主要版本號:當軟體包的重大功能發生改進時,才用於修正主要版本號
次版本號碼:某個子功能發生改變時,才會改變,才用於修正次版本號碼
發行次數就是編譯的次數
操作平台主要由以下幾種:
i386:適用於所有的x86平台
i586:針對586等級的電腦進行最佳化編譯的
x86_64:針對64位的CPU進行最佳化編譯的
noarch:表示沒有任何硬體等級上的限制
軟體包管理器的核心功能是:
1、製作軟體包。
我們知道RPM包是經過原始碼編譯而來的,所以RPM包是可以直接用來安裝的,但是不同的發行商的RPM包是不用相互連用的,有的連相同發行商不同版本的RPM包也不可以使用。原因是編譯這些RPM包的編譯環境不一樣所導致的。這些編譯環境包括硬體平台、庫檔案等等。
換句話說,只有編譯環境和安裝RPM的環境一致時,該軟體包才可以使用。而軟體包管理器就可以用來編譯原始碼,使其在特定的平台上使用。
2、軟體包管理器可以來安裝、查詢、升級、卸載、校正軟體包中檔案的正確性、重建資料庫等操作。
在這裡我們先介紹如何使用RPM來安裝軟體的。
在linux系統中,許多軟體在安裝過程中,存在依賴關係,這裡所謂的依賴關係就是說在安裝A軟體時,必須先安裝B軟體,才能在安裝A軟體。這就是軟體的相依屬性。
一、RPM包安裝
文法格式:rpm [option] package_file(這個是軟體的檔案名稱,全稱)
-i:install的意思
-v:顯示安裝過程中的詳細資料
-vv:顯示更加詳細的資訊
-h:以#號來顯示安裝進度,其中每個#表示2%的進度
其中ivh通常一起使用
--nodeps:在安裝過程中,忽略依賴關係,這可能會導致安裝的軟體無法使用
--replacepkgs:重新安裝,替換原有的安裝
--replacefiles:在安裝過程中,如果某個安裝檔案已經存在,可以使用此選項覆蓋。
--force:強行安裝,可以實現重新安裝或者降級安裝
二、RPM包查詢
之前說過RPM包在安裝的時候會產生一個資料庫檔案,這個檔案是/var/lib/rpm/目錄,RPM查詢就是在這個目錄下尋找資料庫檔案的。
文法格式:rpm [option] [package_name]
-q:查詢指定的包是否已經安裝
-qa:查詢已經安裝的所有包,後面不接包名
-qi:查詢指定包的說明資訊
-qc:查詢指定包的設定檔
-qd:查詢指定包的協助檔案(與man相關)
-ql:查詢指定包安裝後產生的檔案清單
-q --scripts:查詢指定包中所包含的指令碼
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/3F/A7/wKiom1PLzuLinDwdAAFEfrLBSMo212.jpg" title="sc.png" alt="wKiom1PLzuLinDwdAAFEfrLBSMo212.jpg" />
-qf /path/to/somefile:查詢指定的檔案是由那個rpm包安裝產生的。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/3F/A7/wKioL1PL0jbSWFPLAAEIgKW2BOc249.jpg" title="qq1.png" alt="wKioL1PL0jbSWFPLAAEIgKW2BOc249.jpg" />
如果某個軟體包未安裝,想要查詢其相關資訊,可以使用-qp來查詢
文法格式:rpm -qp[ilcfd] package_name(未安裝的軟體包名)
其中-iclfd意思和上面一樣
三、RPM包升級
rpm -Uvh package_file :如果該軟體包已安裝,則升級;沒有安裝,則進行安裝
rpm -Fvh package_file:如果該軟體以安裝,則升級;沒有安裝,則退出
其中選項--oldpackage用於降級安裝
四、RPM包卸載
rpm -e package_name:卸載某個軟體包
--nodeps:在卸載過程中忽略依賴關係。
在卸載過程中,最好從上層一次往下卸載,避免系統混亂。
五、校正RPM安裝產生的檔案
校正RPM中的檔案可以用來檢測某個檔案是否被修改過,以及該檔案是否被誤刪了等資訊。它是通過對比/var/lib/rpm/下的資料庫內容和當前系統上面的所有檔案等機制來檢測的。
文法格式:
rpm [option] [package_name]
-V :檢測指定的軟體包中的檔案是否被修改過,只有被更動過的檔案才會顯示出來
-Va:列出系統上所有被更動的檔案
-Vf:檢測某個檔案是否被更動過
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/3F/A9/wKioL1PL52zypcd1AABHLHPufPs693.jpg" title="xg.png" alt="wKioL1PL52zypcd1AABHLHPufPs693.jpg" />
其中這上面的每一個點代表的是SM5DLUGT,只有改變的才會顯示出來
S:檔案的大小發生改變
M:檔案的類型或者許可權發生改變
5:MD5隨機碼不同
D:裝置的主/次代號發生改變
L:Link路徑發生改變
U:檔案的屬主發生改變
G:檔案的屬組發生改變
T:檔案的修改時間發生改變
其中後面的字元表示檔案類型
c:表示設定檔
d:資料檔案
g:該檔案不被某個軟體所包含
l:許可證檔案(license file)
r:讀我檔案(read me)
六、建立資料庫
如果某個使用者別不小心損毀了/var/lib/rpm/目錄下的檔案,那麼可以使用rpm來重建資料庫
文法格式:
rpm --rebuilddb:不管RPM資料庫是否存在,使用該選項一定會重新建立資料庫
rpm --initdb:初始化資料庫,也就是說如果資料庫不存在則建立資料庫;存在則不用建立。
本文出自 “linux學習之路” 部落格,謝絕轉載!
linux學習之路之軟體包的管理(RPM)