Linux學習之: rpm包管理功能全解

一、什麼是RPM

        RPM的全名爲"RedHat Package Manager",是有RedHat公司研發程序包管理器。在CentOS系統上RPM命令管理程序包常用的功能有:安裝、升級、卸載、查詢和校驗、數據庫維護。

二、RPM常用的功能詳解

    1.RPM安裝(install)

          命令格式:rpm {-i|--install} [install-options] PACKAGE_FILE ...      

          通常我們會這樣執行安裝命令:  
              [root@localhost ~]#  rpm -ivh zsh-5.0.2-7.el7.x86_64.rpm

                # 爲當前系統安裝zsh;

           [install-options]:

                -i:install

                -v:顯示詳細的安裝信息

                -h:hash marks輸出進度條;每個#表示2%的進度;

                --test:測試安裝,檢查並報告依賴關係及衝突消息等;

                  例如:測試安裝tomcat包是否與其他程序包有依賴關係

wKiom1Z6lnOw1zfqAAGi3_Go2KQ437.jpg

                --nodeps:忽略依賴關係,此操作有風險;

                    例如:忽略依賴關係,強行安裝tomcat。

                    wKioL1Z6lz2A4eh3AADha0b_v5U442.jpg

            注意:tomcat已經被安裝,但是由於忽略了依賴關係,此程序很有可能不能使用;

                --replacepkgs:重新安裝該程序包;

                 例如:忽略依賴關係,重新安裝tomcat。

      wKioL1Z6mSvQ4VdrAADtdkk6WEw370.jpg

                --nosignature:不檢查包簽名信息,不檢查來源合法性;

                 例如:不校驗zsh的簽名信息,直接安裝;

                    wKiom1Z6nZ7QGGV9AACgJS-9TaU193.jpg

                --nodigest:不檢查包完整性信息;

                 例如:不檢查zsh-5.0.2-7.el7.x86_64.rpm包的完整性,安裝zsh。

wKioL1Z6niWgtKlDAADM7isCGls343.jpg

    2.RPM升級(fresh&update)

                rpm  -U [install-options] PACKAGE_FILE ...
                rpm  -F [install-options] PACKAGE_FILE ...  

            -Uvh:後面接的軟件包被安裝過,會自動安裝,安裝過,則進行升級;

                wKiom1Z6maCCtyThAADd0bS4riI665.jpg

            -Fvh:後面接的軟件包安裝過則進行升級,未安裝,則該軟件不會被安裝(升級);

                  wKioL1Z6mZ3jY6kfAAB7T8tDZoE817.jpg

             常用選項:

                    --oldpackage:降級;
                    --force:強制升級;          
        注意:

                (1) 不要對內核做升級操作;Linux支持多內核版本並存,因此,直接安裝新版本內核;
                (2) 如果某原程序包的配置文件安裝後曾被修改過,升級時,新版本的程序提供的同一個                 配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名。

    3.RPM卸載(erase)

            rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

             常用選項:

                    --allmatches:卸載所有匹配指定名稱的程序包的各版本;
                    --nodeps:忽略依賴關係
                    --test:測試卸載並不會正真的卸載程序包;

        注意:

                (1) 通常文件的卸載操作用rpm -e PACKAGE_NAME就可以完成;

                (2) 卸載的時候只需要給出包名,安裝與升級的時候給出文件路徑和包名。

    4.查詢(query)

            rpm {-q|--query} [select-options] [query-options]   
            [select-options]
                PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
                -a, --all:查詢所有已經安裝過的包;

                例如:查詢當前系統上已經安裝的程序包。    #由於安裝的包太多,這裏顯示10行
                      wKiom1Z6nrnwPrLnAAEzu-VRbVE513.jpg

                -f  FILE:查詢指定的文件由哪個程序包安裝生成;

                  例如:查詢/etc/issue文件是由哪個安裝包生成的文件。

                      

           wKioL1Z6nx7wiM-UAABVP65imRg548.jpg


                -p, --package PACKAGE_FILE:用於實現對未安裝的程序包執行查詢操作;

                    例如: 查詢

                --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;

                例如:查詢bash是由哪個程序包提供的就可以使用如下命令:

                   wKioL1Z6oymRTlkxAABD6GzT3-U757.jpg

                --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

                例如:查詢bash被哪些程序包所依賴。

                    wKioL1Z6o9_x1w4-AAEAt6Y-KLg384.jpg     
            [query-options]
                --changelog:查詢bash的changlog;

                    例如 : [root@localhost ~]# rpm -q --changelog  bash  #查詢bash的歷史日誌

                            文件信息很多,這裏就不顯示了;

                -l, --list:程序安裝生成的所有文件列表;

                    例如:查詢安裝bash生成的文件。 #由於文件篇幅很大,這裏只截取部分。
                         wKioL1Z6n5KCwADXAADsK7OqKWQ362.jpg  

                -i, --info:程序包相關的信息,版本號、大小、所屬的包組,等;

                    例如:查詢bash的相關信息

                       wKiom1Z6kbLTfuWJAAKY336codU255.jpg  


                -c, --configfiles:查詢指定的程序包提供的配置文件;

                    例如:查詢zsh的配置文件,顯示如下信息:

                    wKiom1Z6kkKyesAjAABuHVMl-SY586.jpg

                -d, --docfiles:查詢指定的程序包提供的文檔;

                    例如:查詢bash提供的文檔,顯示如下,大家可以看到有很多類型的文檔:

                        wKiom1Z6ktjzE7j-AAFY1iabUpk892.jpg

                --provides:列出指定的程序包提供的所有的CAPABILITY;

                      例如:列出zsh提供的所有的CAPABILITY;

                          wKioL1Z6k8DQRpgEAABtEK9Bh_8334.jpg

                -R, --requires:查詢指定的程序包的依賴關係;

                    例如:查詢tomcat 包被被哪些程序包依賴:

                        wKioL1Z6pRrByBCTAAGQUpSxzCE063.jpg  

                 --scripts:查看程序包自帶的腳本片斷;

                例如:查詢tomcat安裝時用到的腳本。

                    

wKiom1Z6pIDBXuSGAALrOyudFCc225.jpg


    5.校驗(verify)

            rpm {-V|--verify} [select-options] [verify-options]   
                S file Size differs   # 校驗文件大小
                M Mode differs (includes permissions and file type)  # 校驗文件權限
                5 digest (formerly MD5 sum) differs  # MD5碼校驗
                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   # 文件capability的校驗

     ●Linux安裝程序包來源合法性驗正完整性驗正      
        獲取並導入信任的包製作者的密鑰:
            對於CentOS發行版來說:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  
        驗正:
            (1) 安裝此組織簽名的程序時,會自動執行驗正;
            (2) 手動驗正:rpm -K PACKAGE_FILE
         

    6.數據庫維護

    數據庫重建:
        rpm管理器數據庫路徑:/var/lib/rpm/
            查詢操作:通過此處的數據庫進行。
        獲取幫助:
            CentOS 6:man rpm
            CentOS 7:man rpmdb

             rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
                --initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;

                                當前有時不執行任何操作;
                --rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建。

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