Linux程序包管理:RPM和YUM

Linux程序包管理:RPM和YUM  
就像Window一樣,我們安裝了windows系統如果沒有相應的應用軟件,如OFFICE,IE,等各種軟件,用戶是無法使用計算機,linux 完成各種應用功能,也需要各種應用程序,所以程序包的管理就非常必要。

Linux平臺的內核功能:進程管理、內存管理、網絡協議棧、驅動程序、...  
          應用程序:    
          早期的linux程序包的組成部分:    
            二進制程序:/bin, /sbin,/ /usr/bin, /usr/sbin,    
            庫文件:/lib64, /usr/lib64    
            配置文件:/etc    
            幫助文件:manual, info,    
    所以早期在linux上安裝管理應用程序非常的不便。直到包管理器的出現    
   
包管理器的作用:打包,包管理(安裝、升級、卸載、查詢及校驗)    
        deb: debian 最早的包管理器    
        rpm: redhat package manager 現在最爲流行的包管理器,    
                RPM is Package Manager

如何獲取rpm包:  
            1、發行版提供的程序包;    
            2、Fedora-EPEL    
            3、項目的官方站點    
            4、搜索引擎    
               
http://rpmfind.net    
               
http://rpm.pbone.net    
               
http://pkgs.org

    CentOS識別光盤用的設備文件:/dev/cdrom   

以下是我的操作:


wKioL1X2_Tfjn54DAAB56gswg78970.jpg

wKiom1X2-wOSEAj8AAScwt9y9rs915.jpg

wKioL1X2_TfAd46FAAA9Uzx2FXM153.jpg

wKiom1X2-wPii7xNAACCHBWF-rI896.jpg

wKioL1X2_TfyCxxGAADxKCISaWg471.jpg



   
基於rpm命令實現程序包管理:    
        安裝:    
            rpm {-i|--install} [install-options] PACKAGE_FILE ...    
                -i:   安裝軟件包    
                -v:顯示詳細過程,-vv, -vvv    
                -h:軟件包安裝的時候列出哈希標記 (和 -v 一起使用效果更好)  

wKioL1X2_XXybipjAAFgqlR8qZk761.jpg

              

                由於每個rpm包都提供一個或多個capabilities,所以rpm包會有依賴關係

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

wKiom1X2_GGhjmJOAAEU58HDLT8024.jpg

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

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

wKiom1X2_BuQiidvAAFFKqH4-Rc190.jpg

                   --nodeps:不驗證軟件包依賴  
                   --oldpackage:降級;linux服務器要的是穩定,所以有時我們需要降級,經常使用    

先升級:

wKiom1X2_ebAt_8cAAPMsj4Hc2U581.jpg再降級:

wKiom1X2_D-xXdJgAAEH9390r9g400.jpg                   --force:強制升級

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

wKioL1X2_gTgGzZuAACtyFiqFeU754.jpg

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

               查詢選項:  
                   -qa: 查詢本機已經安裝的所有程序包;   

wKioL1X2_rKR1SNhAAPO8GcckD0812.jpg 
                
                   -qf /PATH/TO/SOMEFILE: 查詢此處的文件由哪個程序包安裝生成;

wKioL1X2_2zSsymoAACAmu6vEmQ136.jpg

                   -qc: 查詢指定程序包安裝生成的配置文件   

wKiom1X2_KCRHmxrAABsyFUVF0k163.jpg                
                   -qd: 查詢指定的程序包安裝生成的文檔    

wKioL1X2_vPwC02fAAGV3HR9_9c961.jpg
                
                   -qi: 查詢指定的程序包的相關信息;    

wKiom1X2_NGifhpCAATDNx_PYKQ379.jpg                
                   -ql: 查詢程序包安裝生成的所有文件的列表;    

wKioL1X2_yCBEUHbAAKpg18QLXU075.jpg                
                   -q --scripts:查詢程序包相關的腳本:    
                       preinstall: 安裝前腳本    
                       postinstall:安裝後腳本    
                       preuninstall: 卸載前腳本    
                       postuninstall: 卸載後腳本

                   -p: 查詢針對是未安裝的程序包文件;

wKiom1X2_QqjH8sGAAJX777B1xM882.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    
       

YUM: Yellowdog Updater Modified

    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    
            一個文件通常用於一個或一組功能相近或相關的倉庫

            定義一個YUM倉庫指向:  
                [REPO_ID]           倉庫的名字,不能與其他倉庫重名
                name=                說沒倉庫的意義
                baseurl=              定義倉庫的實際有效地址
                # mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE    該倉庫的鏡像站點
                enabled={1|0}      1表示啓用,0表示不啓動,默認爲啓用
                gpgcheck={1|0}    檢驗包的合法,完整,0爲不啓動
                gpgkey=               公鑰文件的位置
                cost=                     倉庫的開銷

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

            例如:    http://mirrors.magedu.com/CentOS/$releasever/os/$basearch


    yum命令:    
        yum [options] [command] [package ...]

            命令:  
                安裝:install    

wKioL1X3AkSjB_C9AAWh50-KvxA322.jpg

              
                卸載:remove    

wKioL1X3A0PjLKyoAAMQ7FKVhUw818.jpg                
                升級:update    

wKiom1X3AcqQ6F-FAATEVXvhn44734.jpg


                
                查詢:    
                    info    
                    search KEYWORD    
                    list all|installed|availiable    
                    provides /PATH/TO/SOMEFILE: 查詢指定文件由哪個包安裝生成    
                重新安裝:reinstall

wKioL1X3BHTzvigJAAP-kK9g7k0550.jpg
                降級:downgrade

wKioL1X3BUmSzU41AAU0NMmgl8w562.jpg
                清理緩存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]    
                生動生成緩存:makecache

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

                倉庫:  
                    repolist [all|enabled|disabled]    出所有可用倉庫,默認是all                   

                    repoinfo [all|enabled|disabled]   查看倉庫相關信息


如何使用光盤當做本地倉庫:  
        掛載光盤至某目錄    

1:掛載光盤到/media/cdrom

wKiom1X3BxTjMmpbAAHDn0JXm84116.jpg

2:/創建並編輯/etc/yum.repos.d/cdrom.repo文件,定義倉庫,使用file:///指明其訪問路徑;

添加如下:

wKiom1X3EReiFeukAABzAHt4LBA859.jpg

3:備份源倉庫文件並改名:

[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak        
       


創建本地倉庫:  
        yum install createrepo

        createrepo /PATH/TO/RPMFILES/

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