Linux程序包管理器RPM

1. RPM包介紹     

       RPM 是RPM Package Manager(RPM軟件包管理器)的縮寫,一種用於互聯網下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有.RPM擴展名的文件。

       常見的包管理器如下:

           Debian: dpkg, .deb

           RedHat: rpm(redhatpackage manager), .rpm

                 RPM is PackageManager


2.rpm包的命名格式

            name-version-relase.arch.rpm

          version:major.minor.release,同源代碼

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

         eg:bash-4.2.3-3.centos5

 

        arch: 適用於的硬件平臺

             x86: i386,i486, i586, i686

                x86_64:x86_64

                powerpc: ppc

         noarch: 依賴於虛擬機

              例如:bash-4.2.3-3.centos5.x86_64.rpm

 

        一個程序有20個功能:常用功能有8個,特殊A:3個,特殊B6個,二次開發相關功能。

        分包機制:

                    核心包,主包:命名與源程序一致

                                           bash-4.2.3-3.centos7.x86_64.rpm

                    子包:

                                          bash-a-4.2.3-3.centos7.x86_64.rpm

                                           bash-b-4.2.3-3.centos7.x86_64.rpm

                      bash-devel-4.2.3-3.centos7.x86_64.rpm //開發包

 

  OS Vendor: 系統發行商提供的包


3.獲取rpm包的途徑

      1、發行的光盤或站點服務器

           鏡像:

                   http://mirrors.163.com

                   http://mirrors.sohu.com

      2、項目的官網

                   源代碼

                   rpm

      3、很多第三方機構或個人製作並公開發布許多rpm

                    http://rpmfind.net

                    http://rpm.pbone.net

 

      可靠的途徑:EPEL

                   Fedora-EPEL

 

      rpm包的合法性驗正:

             包製作者製作完成之後會附加數字簽名於包上;

                   來源合法性

                   包的完整性

 

        包的製作者使用單向加密提取原始數據的特徵碼,而後使用自己的私鑰加密這段特性碼,附加原始數據後面。

        驗正過程:

        前提:必須有可靠機制獲取到包製作者的公鑰;

        1、使用製作者的公鑰解密加密的特徵碼,能解密則意味着來源合法;

        2、使用與製作者同樣的意向加密算法提取原始數據的特徵碼,並與解密出來的特徵作比對,相同,則意味着完整性沒問題;



4.rpm程序包的安裝/卸載/更新/查詢/校驗/庫重建

4.1  rpm程序包的安裝    

rpm [option]/path/to/package_file

        -i: install

        -v:顯示詳細信息

        -vv:

        -vvv:

        -h: %表示安裝進度

        組合選項:-ivh

         --test: 僅作測試,有真正執行安裝

 

  如果依賴於其它包:

        1、解決依賴關係

        2、忽略依賴關係

        能安裝上,但有可能無法運行;

        --nodeps

 

   重新安裝:

         --replacepkgs

 

    如果原有配置文件作了修改,很有可能不執行替換,而是將應該安裝生成的配置文件重命名爲 .rpmnew

 

4.2 rpm程序包的卸載

    rpm [option]package_name

         -e: erase

 

    如果被其它包所依賴:

          1、將依賴於此包的所有包一併卸載

          2、忽略依賴關係

             能卸載,但依賴於此包程序包可能會運行不正常;

             --nodeps

 

    如果包的配置文件安裝後曾被改動過,卸載時,此文件將不會卸載,而是被重命名並保留,例如

warning: /etc/zprofile saved as /etc/zprofile.rpmsave

 

 

4.3 rpm程序包的升級

      新版本替換老版本

      rpm [option]/path/to/package_file

      1、升級或安裝

            -Uvh

      2升級(一定要有老版本)

              -Fvh

                  --force: 強制升級

 

    注意:不應該對內核執行升級操作,而是安裝。系統允許多內核並存

 

4.4 rpm程序包的查詢

     1查詢某包是否安裝

             rpm -q package_name...

 

     2查詢所有已經安裝的包

             rpm -qa

             按條件過濾:rpm -qa | grep'PATTERN'

 

     3、查詢包的描述信息

              rpm -qi package_name

      

     4、查詢某包安裝生成了哪些文件

              rpm -ql package_name

 

             (1) 查詢某包安裝生成了哪些配置文件

              rpm -qc package_name

 

             (2) 查詢某包安裝生成了哪些幫助文件

              rpm -qd package_name

 

             (3) 查詢程序包的相關腳本

               rpm -q--scripts package_name

 

     腳本有四類:

               preinstall:安裝前腳本

               postinstall:安裝後腳本

               preuninstall:卸載前腳本

               postuninstall:年前後腳本

 

     5查詢某文件是由哪個包安裝生成的

        rpm -qf /path/to/some_file

 

    6、對尚未安裝的包執行查詢

                 rpm [option]/path/to/package_file

                      -qpi

                      -qpl

                      -qpc

                      -qpd

 

4.5 rpm程序包的校驗

                 用於檢查包安裝生成的文件屬性是否發生變化

                 rpm -Vpackage_name

                  S file Size differs

                  M Mode differs (includes permissions andfile 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

 

                 某屬性無變化,顯示爲.

               rpm包來源合法性及完整性檢驗:

 

           前提:在當前系統上導入包的製作者的公鑰

                 導入:

                      rpm --import/path/to/key_file

 

                      # rpm -qagpg-pubkey*

                      顯示所有已經導入的gpg格式的公鑰

 

                      # rpm -qigpg-pubkey-NAME

                      顯示密鑰的詳細信息

 

                 檢查包:安裝過程中會自動執行

 

                 手動檢查:

                      rpm -K/path/to/package_file

                      rpm--checksig /path/to/package_file

 

                            不檢查包完整性:

                                  rpm-K --nodigest

                            不檢查來源合法性:

                                  rpm-K –nosignature

     

4.6 rpm程序包的數據庫重建

           數據庫目錄:/var/lib/rpm

 

           重建:

                 rpm --initdb:初始化

            如果事先沒有庫,會新建一個;如果有,則不新建;

 

                 rpm --rebuilddb: 重建

                      直接重建,覆蓋原有的數據庫

 

    

    總而言之,RPM程序包設計的功能如下:安裝、卸載、查詢、升級、校驗、公鑰導入、合法性驗正、庫重建,新手學習整理,若有錯誤或遺漏還望指正。

 






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