码迷,mamicode.com
首页 > 其他好文 > 详细

yum程序包管理器浅谈

时间:2015-04-13 07:10:11      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:yum

基于rpm安装程序包时,程序包之间的依赖性太过于复杂和麻烦,开发了yum程序包管理器,可以自行的解决程序包之间的依赖关系,并且一次性安装所有的有依赖关系的程序包,无须繁琐的下载依赖性的程序包,相对于rpm来说,rpm为基础包管理,yum是前端工具。而yum需要一个文件服务的服务器,总共有四种文件服务器:ftp服务,http服务,本地文件目录,NFS服务。yum命令工具可以通过配置文件,指向仓库的位置以及相关的各种配置信息;每个yum命令行可以同时指向多个仓库,仓库间可以优先级等相关的配置。

当yum第一次访问yum仓库时,会将yum仓库的元数据缓存在本地配置文件中,当安装过程中会自动寻找yum仓库中的相关依赖性的程序包,然后一并下载。当然,有时yum仓库会发生更改,缓存也需要更改管理。/etc/yum.conf为主配置文件,各仓库文件定义在:/etc/yum.repos.d下,文件必须以.repo结尾,每个repo配置文件中可以匹配一致多个仓科。在/etc/yum.repos.d的[main]提供的是公共配置信息。对于当前系统的yum来说,每个仓库的repositoryid用于指向repository,因此都是唯一的。

  仓库配置(在/etc/yum.repos.d下创建文件)

        [repositoryid]

       #对于当前系统的yum来讲;此repositoryid用于唯一标识此repository指向,因此,其必须唯一

         name=

   #当前仓库描述信息

           baseurl=  baseurl=url://path/to/repository/

   #指明repository的访问路径;通常为一个文件服务器上输出的某repository; 

            url:(或使用mirrolist指明一个url,此url指向的文件中包含多个指向库的url)          

                 ftp服务:

                     ftp://SERVER/PATH/TO/REPOSITORY

                  http服务:

                     http://SERVER/PATH/TO/REPOSITORY

                本地目录:

                     file://SERVER/PATH/TO/REPOSITORY

                  enabled={1|0}

         此仓库是否可被使用

                   gpgcheck={1|0}

                    是否对程序包做校验

                 gpgkey=url://path/to/keyfile

         指明gpgkey文件路径;

                 cost=#

         指明当前repository的访问开销,默认为1000


  例:

   [yumtest]

    enabled=1

    gpgcheck=0

    baseurl=http://172.16.0.1/fedora-epel/6/x86_64/

    name=epe


    读取仓库的元数据后,会保存在/var/cache/yum/x86_64/6下,方面下次使用yum命令时进行检索读取,通过yum clean all 可以清楚此目录下的所有缓存信息,yum repolist可以重新建立缓存信息。

下面是yum命令的常用的选项:


 command is one of:

        * install package1 [package2] [...]

        * update [package1] [package2] [...]

        * update-to [package1] [package2] [...]

        * check-update

        * upgrade [package1] [package2] [...]

        * upgrade-to [package1] [package2] [...]

        * distribution-synchronization [package1] [package2] [...]

        * remove | erase package1 [package2] [...]

        * list [...]

        * info [...]

        * provides | whatprovides feature1 [feature2] [...]

        * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

        * makecache

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]

        * search string1 [string2] [...]

        * shell [filename]

        * resolvedep dep1 [dep2] [...]

        * localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        * localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)

        * reinstall package1 [package2] [...]

        * downgrade package1 [package2] [...]

        * deplist package1 [package2] [...]

        * repolist [all|enabled|disabled]

        * version [ all | installed | available | group-*  |  nogroups*  |  grouplist  |

       groupinfo ]

       *       history      [info|list|packages-list|packages-info|summary|addon-

       info|redo|undo|rollback|new|sync|stats]

        * load-transaction [txfile]

        * check

        * help [command]

仓库管理:

        repolist:列出已经配置的所有可用仓库

                        repolist [all|enabled|disabled]

 缓存管理:

         clean:清理缓存

                       clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

          makecache:缓存创建

                        自动连接至每一个可用仓库,下载其无数据,将其创建为缓存;

 

 程序包查看:list                  

      yum list [all | glob_exp1] [glob_exp2] [...]

            yum list available [glob_exp1] [...]

            yum list updates [glob_exp1] [...]

            yum list installed [glob_exp1] [...]

            yum list extras [glob_exp1] [...]

             yum list obsoletes [glob_exp1] [...]

             yum list recent

 

              grouplist

 

程序包安装:

       install package1 [package2] [...]

      Note:只需要提供包名:

      yum install package1

 

     如果某包有在不同仓库中有多个不同版本,默认会安装最新版本;

 如果要安装指导版本:  install PACKAGE-VERSION...

 

   重新安装(覆盖安装)

      reinstall package1 [package2] [...]

   程序包升级:

       update [package1] [package2] [...]

  程序包降级:

       downgrade package1 [package2] [...]

  检查有哪些升级可用:

        check-update

   卸载:

       remove | erase package1 [package2] [...]

 

         所有依赖于正卸载的程序包的程序包会被一并卸载;

  查询:

        查询程序的相关简要信息:info [...]

         在包名和sumary信息中搜索指定的关键字: search KEYWORD...

    查询指定文件有哪个程序包安装生成 provides | whatprovides feature1 [feature2] [...]

 

安装本地的程序包文件:

         localinstall rpmfile1 [rpmfile2] [...]

         用于安装仓库中并不存在的程序包文件,这些程序包有可能依赖于仓库中的某些程序包;

         localupdate rpmfile1 [rpmfile2] [...]

 

包组管理:

        列出所有包组:grouplist

    显示指定包组详情:groupinfo group1 [...]

         安装:groupinstall group1 [...]

        卸载:groupmove group1 [...]

        升级:groupupdate group1 [...]

  可直接用install remove update来管理包组:

        @GROUP_NAME

 

        yum install @"Server Platform Development"

 

  yum命令的可用选项:

              -y ;自动回答为yes

      --disablerepo= : 临时禁用在配置文件中配置并启用的某repository

      --enablerepo=:临时启用指定某repo

      --nogpgcheck:禁止做包检验

yum有内置变量,用于保存当前平台的相关信息;

        1$releasever   :当前OS发行版的主版本号;

                                例如,对CentOS 6.6 x86_64 , 主版本号为6

    2 $arch :平台

         3 $basearch:基础平台,例如i686 , i586 , i486 i386的基础平台为 i386

          4 $YUM0-$YUM9为定义的变量,一般不常用。

例如:

         baseurl=http://repo.magedu.com/centos/$releasever/$basearch

  当前系统为CentOS6.6 x86_64,会生成http://repo.magedu.com/centos/6/x86_64的路径,6为版本号,若有升级版6.0、6.1、6.2多个版本时可以在目录下建立文档,通过链接到升级版本的文件;还可以在$basearch想建立多个平台的文档。

 在实际运用中,我们还可以通过使用光盘镜像来作为yum repository;

(1)挂载光盘到指定挂载点,如/media/cdrom

(2)新建yum repo配置文件,类似如下所示:

[dvdbasel 
    name=CentOS 6.6 X86_64 on dvdl 
    baseurl=file: // /media/cdrom 
    gpgcheck=0 
    enabled=1 
  自己创建yum仓库:
       (1)在基于发行版安装树安装createrepo 
         (2)确定repository输出方式:
                    本地输出:提供一个方式rpm包的本地路径
                    网络输出:提供一个文件服务器,配置好ftp服务或http服务                 
               ftp服务:
                     安装程序包: vsftpd
                     文件存传递放路径 /var/ftp/pub
                     启动服务: service vsftpd start
               http服务
                                               安装程序包:httpd       
                     文件存放路径: /var/www/html
                     启动服务: service httpd start
                  Note:确保防火墙服务关闭
           (3)在准备好的目录中方式rpm程序包文件
           (4)对此目录运行createrepo命令即可
           (5)在配置文件中加入配置


本文出自 “LinuxNew” 博客,请务必保留此出处http://jimchen.blog.51cto.com/10026955/1631595

yum程序包管理器浅谈

标签:yum

原文地址:http://jimchen.blog.51cto.com/10026955/1631595

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!