程序包的管理器,其功能有打包、后续的包管理(安装,升级,卸载,查询及校验)  

    deb:debian系列系统    
    rpm:功能的提升使得rpm包管理器成为linux主流的标准    
       
    程序包的组成四部分:    
        1.二进制程序:程序的源代码存放/bin, /sbin,/ /usr/bin, /usr/sbin,    

        2.库文件:某些         二进制程序可能会被多个程序包调用,将这些被多个调用的称               之为库文件存放在/lib64,/usr/lib64    

        3.配置文件: 大型程序执行过程中需要许多命令选项,通过配置文件确定大型程序的工作特性         存放在/etc    
        4.帮助文件:获得程序的使用帮助 manual, info

    包管理器功能:  

        打包:将程序包组成部分打包成一个单一的归档文件中;    
        安装:将程序包展开,将每个部分存放到相应的路径供系统使用该程序;    
        卸载    
        升级    
        查询    
        校验:查询程序包安装完以后相关内容是否被修改    
       
       
    rpm包管理器    
        打包工具rpmbuild:基于为每个应用文件提供的specs文件打包    
   
        应用程序包根据应用程序的功能常用否分为    
            核心包:testapp-VERSION 
            支包:testapp-devel-VERSION    
                VERSIOND的格式:major.minor.release    
       
        rpm包的命名机制:    
            包名-应用程序自己的版本号-rpm包自己的release.ARCH(适用的平台架构).rpm    
            rpm包是通过rpm打包工具将应用程序包打包所得    
           
        包和包之前存在依赖关系。因为一个大型程序由若干小的程序组成    
   
    获得rpm包的途径:    
        1、发行版的提供镜像中有一个存放rpm包的文件夹    
        2、Fedora-EPEL    
        3、某些项目的应用程序官方网站提供项自己做的的RPM包    
        4、4、搜索引擎    
               
               
               
       
    最安全可靠的RPM包获取方法为挂载各发行版提供的镜像中RPM包文件    
        centos识别光盘的文件/dev/cdrom为标准路径    
       
       
    RPM命令的使用 实现程序包管理:    
        安装:rpm { -i | install} 【install-options】 PACKAGE_FILE。。。    
                    -v:实现详细过程    
                    -h:显示过程的进度(用#表示)               
                   
                    常用的install-options    
                    --nodeps:忽略包之间的依赖关系安装rpm包,在包安装完后可能无法使用    
                    每个RPM包都提供一个或多个capabilities,某些RPM包的安装需要别的包所提供                     的capabilities。称之为RPM包之间的依赖    
                    --replacepkgs:实现包的重装

                    示例1:rpm包的安装和重安装  

                   

                   示例2:忽略包的依赖关系安装rpm包

                      

        升级:    
               rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...    
               rpm {-F|--freshen} [install-options] PACKAGE_FILE ...    
                    -Uvh:如果已旧版本的RMP包,则升级到新版本的RPM包;如果没有安装过,则安                     装新版本的。过程和进度都显示出来    
                    -Fvh:如果已旧版本的RMP包,则升级到新版本的RPM包;如果没有安装过,就不                     做任何操作。过程和进度都显示出来    
                    
                    升级常用到的install-options

                    --nodeps:忽略依赖关系  

                    --oldpackage:将已安装的新版本的RPM包降级到老版本的    
                    --force:强制升级,升级的RPM包被其他包所依赖会被拒绝升级需要强制升级

                    示例:包的存在的前提条件下使用-FVH升级包  

                    

           

                    

             

                    示例:对已安装的包降级

                    

         

                    

        卸载:    
                rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test]                           PACKAGE_NAME ...      卸载只需要指定包名即可    
                    --nodeps:卸载一个被依赖的包后 依赖该包的包会失去作用    
                    

             

        查询:    
                rpm {-q|--query} [select-options] [query-options]    
                    -qa:查询已安装的所有rpm包    
                    -qf /PATH/TO/SOMEFILE:查询此路径的文件是由哪个包安装生产的    
                    -qc:查询指定rpm包安装生产了哪些配置文件    
                    -qd:查询指定rpm包安装生产了哪些帮助文档    
                    -qi:显示指定rpm包的相关信息    
                    -ql:查询指定rpm包安装生产了哪些的所有文件列表    
                    -qR::查询指定rpm包依赖那些个数据包    
                    -p:查询对象为未安装的rpm包

        

             

                    
        校验:检测rpm包安装后生产的文件是否有被修改的

       包校验:  

               验证包完整性:通过单向加密(md5|sha1)效验码

               验证来源合法:公钥加密(RSA)

 

            导入制作者的公钥:CentOS发行商的公钥在ISO文件 “RPM-GPG-KEY-CentOS-6”  

            rpm --import 导入秘钥能进行包校验(秘钥必须是来源可靠的)    
            rpm -K /PATH/TO/RPM_FILE

YUM:  

    工作原理是因为他抽取了包与包之间依赖关系。依赖外在的yum的rpm包仓库    
   
    本地运行yum程序,它寻找rpm包仓库(不止一个),在仓库中找到后下载回本地    
   
    仓库中有大量rpm包 有元数据文件记录包名 有多少包 以及包的依赖关系。yum程序会先把仓库的元     数据文件缓存在本地,方便查看。    
   
    yum程序的配置文件:    
        /etc/yum.conf 
            定义全集配置:对所有仓库都适用的配置    
        /etc/yum.repos.d/*.repo    
            一个.repo文件对应一个或一组rpm包功能相近或相依赖的仓库    
                       
        定义一个仓库指向:    
            [REPO]    
            name=指定名字    
            baseurl=指定路径  路径可以多个随机抽取每个必须一样    
                    使用路径中有定义仓库指向可用变      

                               $releasever: 引用当前系统的主版本号;  

                               $basearch: 当前系统的基本架构;

                               方便指定路径根据自身当前的系统选择合适的版本  

            #mirrorlist    
            enabled 1代表启用0不启用    
            gpgcheck 1代表启用0不启用                                

            cost指明仓库的开销,开销越小越先采取    

            

     yum程序的配置文件指定对应服务器访问方式:

         ftp   

         http  

         nfs    nfs://server/nfs_path

         file   file:///path/to/repo

    yum命令    
       
        常用选项    
        安装:install 所依赖的包一并安装    
        卸载:remove  那些依赖要被卸载包的包会被询问是否卸载    
        升级:update   yum check-update检查系统已安装的包有那些包可以升级    
        查询:    
                info    无论安装与否都可以查询rpm包的简要信息    
                search KEYWORD 基于包名的关键字进行搜索查询    
                list all|installed|avail    查询所有包|已安装|可以安装的    
                provids /path/to/somefiel: 查询指定文件是由哪个包安装生成的    
        重新安装 reinstall    
        降级:downgra    
        清理缓存:清理对象可以指定    
        手动生成缓存:makecache    
        包组:    
                groupinfo “指明包组名” 查询一个包组的信息    
                groupinstall “指明包组名”整组的安装包

        仓库:  

            repolist:列出可使用的包仓库    
           
    使用光盘当做本地仓库:    
        1.挂载光盘    
        2.创建指向光盘挂载路径的本地仓库(为了优先使用可以设置较低的开销值)    
       
    DNF:下一代的包管理器功能接近yum,功能更强大

创建本地源

       

        使用yum安装解决包之间的依赖关系  

       

       列出可用的yum源