Linux程序包管理之RPM

一RPM介紹:

        1,RPM:是指.rpm的文件格式的軟件包,也可能是指其本身的軟件包管理器(RPM Package Manager)。最早由Red Hat研製,現在也由開源社區開發。RPM通常隨附於Linux發行版,但也有單獨將RPM作爲應用軟件發行的發行版(例如Gentoo)。RPM僅適用於安裝用RPM來打包的軟件,目前是GNU/Linux下軟件包資源最豐富的軟件包類型之一。

 

        2,包管理器的基本功能:

安裝、卸載、升級和管理軟件
組件查詢功能
驗證功能
軟件包GPG和MD5數字簽名的導入、驗證和發佈
軟件包依賴處理
選擇安裝
網絡遠程安裝功能
 

        3,rpm包命名格式: name-version-release.arch.rpm

name: 軟件包名

version: 軟件的版本號

release:rpm自身的發行號,與程序源碼的發行號無關,僅用於標識對 rpm包不同製作的修訂;release還包含此包適用的OS

arch:適用於的硬件平臺,主要有:i386, i486, i586, i686,x86_64,powerpc,noarch

 

        4,RPM分包管理:一個軟件可能會包含許多功能,針對不同的用戶按照功能進行分包,是用戶免於下載安裝不需要的功能模塊.一般是有一個主包,提供基本功能;其他功能分別打包成不同的支包文件來使用。常見的包有

       

        5,來源合法性驗正:
源程序:通過md5或sha1校驗碼驗正;
rpm包:發行商提供的合法性是可信的


         6,獲取rpm包的途徑:
  發行商的光盤或站點服務器
   以CentOS爲例: 
       http://mirrors.163.com
       http://mirrors.sohu.com
       http://mirrors.hust.edu.cn
       http://rpmfind.net
       http://rpm.pbone.net

 

二,RPM的使用,這裏因爲rpm的選項較多,所以按照功能進行大致的分類

rpm [option] /path/to/package

1,rpm包管理安裝:

          -i, --install   使用格式:# rpm -i /path/to/rpm_package ...
          -v: 詳細信息 -vv: -vvv:更加詳細的信息
          -h: hash, 以#的個數顯示安裝進度,一個#表示2%的進度;

          --test:僅測試,不真正執行安裝過程

          --nodeps: 忽略依賴關係

          --replacepkgs:重新安裝: 原來的配置文件不會被覆蓋,新安裝的配置文件將會重命名爲以.rpmnew爲後綴的文件;

2,rpm包管理卸載:

          -e, --erase:卸載
         如果卸載被其它程序所依賴的包:
              (1)、把依賴者一同卸載;
              (2)、忽略依賴關係;--nodeps
              (3)、不再卸載

 3,軟件包管理升級
    rpm {-Uvh|-Fvh} /path/to/package_file
        (1),升級或安裝
            -Uvh:如果軟件包不存在則安裝,如果存在則升級。
        (2),升級
            -Fvh:如果軟件包不存在則什麼都不幹,如果存在則升級。
        (3),強制升級

            --force: 如果有時候升級有問題,則可以使用

    注意:不應該對內核執行升級操作,而是安裝。因爲系統允許多內核並存,所以萬一升級失敗,還可保證系統不出現問題。
 

4,rpm包管理查詢: -q

-qa: 查詢所有已經安裝的包

-qi:  查詢包的描述信息:rpm -qi package_name

wKiom1PQgoLy9pH-AAKn744VtE0882.jpg

 

-ql:  查詢包安裝之後在當前系統生成文件列表:rpm -ql package_name

-qf:  查詢某文件是哪個包安裝生成的:rpm -qf /path/to/somefile

-qd: 查詢包安裝後生成的幫助文檔:rpm -qd package_name

-qc: 查詢包安裝後生成的配置文件:rpm -qc package_name

--scripts:  查詢包相關的腳本:rpm -q --scripts package_name
  腳本有四類:
   preinstall: 安裝前腳本
   postinstall: 安裝後腳本
   preuninstall: 卸載前腳本
   postuninstall: 卸載後腳本

-p: 對未安裝的文件進行查詢
-qpl:  查詢安裝後會生成的文件列表:rpm -qpl /path/to/package_file 
-qpi:  查詢其簡單描述信息:rpm -qpi /path/to/package_file

 

5,rpm包管理:校驗 
 檢查包安裝後生成的文件是否被修改過;
 rpm -V package_name
 

wKiom1PQm1eyjv9bAAA2GTARWFU757.jpg

常見屬性如下:如果某屬性無變化,則顯示爲.

       S file Size differs   大小
       M Mode differs (includes permissions and file type) 權限
       5 digest (formerly MD5 sum) differs    效驗碼
       D Device major/minor number mismatch   設備號
       L readLink(2) path mismatch     路徑
       U User ownership differs        屬主
       G Group ownership differs     屬組
       T mTime differs               時間戳
       P caPabilities differ          提供的能力


6,rpm包管理:檢驗來源合法性和軟件包完整性
         包完整性:通過單向加密機制(md5|sha1)
         來源合法性:通過公鑰加密機制(RSA)

         導入製作者的公鑰,CentOS發行版的公鑰在iso文件中;
         --import:導入命令:rpm --import /path/to/gpg-key-file

         rpm -qa gpg-pubkey*  顯示所有已經導入的gpg格式的公鑰
         rpm -qi gpg-pubkey-NAME  顯示公鑰的詳細信息

-K:檢查:rpm -K /path/to/package_file   rpm --checksig /path/to/package_file
       --nosignature: 不檢查來源合法性
       --nodigest: 不檢查完整性


 

 

7,rpm包管理:數據庫重建
         數據庫:/var/lib/rpm/

         重建:

          rpm --initdb: 初始化   如果事先不存在一個數據庫,則新建之;
          rpm --rebuilddb: 重建   直接重建數據庫,會覆蓋原有的庫;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章