Linux運維練習--程序員包管理rpm與yum

程序包管理:

包管理器:作用是打包以及包管理(安裝、升級、卸載、查詢及校驗)

                 對於不同linux發行版本有不同的包管理器,主要有

                 deb:debian

                 rpm:redhat package Manager,rpm成爲事實上包管理器的標準

                程序包的組成部分:

                          二進制程序:通常存放在以下文件,/bin, /sbin,/ /usr/bin, /usr/sbin,
                          庫文件:通常存放在以下文件,/lib64, /usr/lib64(64位系統)
                          配置文件:/etc
                          幫助文件:manual, info,

                 包管理器:提供在操作系統中安裝,升級,卸載需要的軟件的方法,並提供對系統中所有

                                     軟件狀態信息的查詢

                 rpm包:

                            打包工具:rpmbuild:specs文件

                            分包機制:根據功能分包:

                                                如:test-Version.tar.gz

                                                    核心包:test-Version

                                                        支包:testapp-devel-Version

                                                   Version:主版本號.此版本號.發行號

                 rpm包的命名機制:
                                   name-VERSION-RELEASE.ARCH.rpm

                                   RELEASE.ARCH: rpm release和適用的平臺和架構,如

                                   bash-4.2.4-1.el7.x86_64.rpm表示適用於redhat enterprise linux 7 64位系統

                 rpm數據庫:對於redhat和CentOS一般在:/var/lib/rpm,如圖(CentOS 64bit):

               wKiom1X2yUOB4y6zAAIYsEG_xxY437.jpg

                獲取rpm包的途徑:1、發行版提供的程序包(光盤)

                                                    掛載光盤文件,包文件在Packages下面
                                              2、Fedora-EPEL
                                              3、項目的官方站點
                                              4、搜索引擎
                                                         http://rpmfind.net
                                                         http://rpm.pbone.net
                                                         http://pkgs.org

 

              rpm命令實現程序包管理:
                       安裝:
                                rpm {-i|--install} [install-options] PACKAGE_FILE ...
                                        -i:     -v:顯示詳細過程, -h:”#“號顯示安裝進度

                               wKiom1X2zdCCG_B2AADTlc7Hodw421.jpg

                                          -q 查看某程序包是否安裝

                                每個rpm包都提供一個或多個capabilities

                                --nodeps:忽略依賴關係安裝
                                --replacepkgs:重裝程序包

                      升級:
                               rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
                               rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 

                               -Uvh: 如果有舊版程序包,則升級之;如果沒有,則安裝之;
                               -Fvh: 如果有舊版程序包,則升級之;如果沒有,則不安裝;

                               --nodeps
                               --oldpackage:降級;
                               --force:強制升級,不管依賴於老程序包的程序             

                      卸載:
        rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 

                      如果有程序依賴於被卸載程序,則卸載會有警告,--nodeps也可忽略依賴

                      查詢:
                               rpm {-q|--query} [select-options] [query-options]

                               查詢選項:                                            

                                     -qa: 查詢本機已經安裝的所有程序包;
                                    -qf: /PATH/TO/SOMEFILE: 查詢此處的文件由哪個程序包安裝生成;

                                    -qc: 查詢指定程序包安裝生成的配置文件
                                    -qd: 查詢指定的程序包安裝生成的文檔
                                     -qi: 查詢指定的程序包的相關信息;
                                     -ql: 查詢程序包安裝生成的所有文件的列表;
                                     -q:--scripts:查詢程序包相關的腳本:                                   

                                              preinstall: 安裝前腳本
                                               postinstall:安裝後腳本
                                               preuninstall: 卸載前腳本
                                                 postuninstall: 卸載後腳本

                                     -p: 查詢針對是未安裝的程序包文件;查詢本地存在而沒有安

                                         裝的rpm包信息              

                               wKiom1X20huRQyjCAAMTVlTNYp0639.jpg

                     校驗:
                               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
                                         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 --import /PATH/TO/KEY_FILE
                              校驗:rpm -K /PATH/TO/RPM_FILE,文件校驗後就不會存在來源警告信息

 wKiom1X21Q_xaNozAAEW6IQm_ho437.jpg

YUM:Yellowdog Updater Modified(RPM包的前端管理工具)

                yum外在倉庫的元數據(包括倉庫程序包的數量、程序包名以及依賴關係等)下載到本地緩存

            然後,在安裝某個程序包是,在本地緩存即可查詢包所在的位置和依賴關係,下載最新版本和依

            賴包到本地緩存進行安裝。本地會定期將本地緩存的倉庫元數據與外在倉庫的元數據進行校驗碼

            比對,如果發現外在倉庫校驗碼更新,則更新本地倉庫元數據

     yum repositories:
                    文件服務器(常見用法):
                                                         ftp://hostname/PATH/TO/REPO
                                                         http://hostname/PATH/TO/REPO
                                                         file:///PATH/TO/REPO

      yum程序的配置文件:
                     /etc/yum.conf: 定義全局配置:對所有倉庫都適用的配置
                     /etc/yum.repos.d/*.repo:通常用於一個或一組功能相近或相關的倉庫,如base倉庫 

                       定義一個倉庫指向:
                              [REPO_ID]  
                              name=
                              baseurl=    //如有多個URL則隨機選擇一個,但是必須保證每個倉庫的元數據一致,建議只用一個URL
                     # mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE
                     enabled={1|0}  //1表示啓用
                     gpgcheck={1|0} //1表示需要進行gpgcheck
                    gpgkey= 
                    cost=   //當有多個倉庫時需要選擇最優的倉庫,倉庫的開銷,數值越低優先級越高

              wKiom1X22yaDNZGBAADrcgqFmjI976.jpg

             定義倉庫指向可用變量:
                           $releasever: 引用當前系統的主版本號;
                             $basearch: 當前系統的基本架構;
                                               i386, i486, i586, i686: i386

     

        yum命令:
               yum [options] [command] [package ...]
               安裝:install

               本地安裝:localinstall,也可自動解決依賴問題
               卸載:remove
               升級:update
               查詢: info

        wKiom1X24GTgNwFnAAI6jHeA5Ck921.jpg

            search KEYWORD
            list all|installed|availiable,列出所有的|已經安裝的|可以獲得的包,支持通配符
            provides /PATH/TO/SOMEFILE: 查詢指定文件由哪個包安裝生成

wKiom1X24dayeC5wAAFz742rmXs432.jpg 

          重新安裝:reinstall
          降級:downgrade
         清理緩存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

                          如倉庫元數據,rpm
           生動生成緩存:makecache

           包組:
                         grouplist
                         groupinfo "GRP_NAME"
                         groupinstall "GRP_NAME"
                         groupremove "GRP_NAME"

                倉庫:
                        repolist [all|enabled|disabled]
                        repoinfo [all|enabled|disabled]
       如何使用光盤當做本地倉庫:
                掛載光盤至某目錄
                定義倉庫,使用file:///指明其訪問路徑;

                如:將本地光盤當做默認yum源,更改cost值爲100,base-repo cost 默認爲1000

wKioL1X26YmBsJVXAABzyLcS0B0396.jpg

wKiom1X25xHQAX9lAALfnCjcs0Q002.jpg

               創建本地倉庫:自己根據需求創建倉庫,但是需要自己解決依賴關係
                       yum install createrepo

                       createrepo /PATH/TO/RPMFILES/

                              

 

 

 

                          

                                                                               

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