Linux程序包管理:RPM和YUM

来源:互联网 发布:python 模块大全 pdf 编辑:程序博客网 时间:2024/06/04 22:48

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/

0 0