YUM命令

        wKioL1UrpkLyFitdAAL3LgQhRiE136.jpg

 

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

下面对yum常见用法进行梳理:

一、yum命令格式:yum [options] [command] [package ...]

1、仓库管理:列出已经配置的所有可用仓库

             repolist [all|enabled|disabled]

wKiom1UrptSDrmPAAAFNA5w8Qf4124.jpg

 

2、缓存管理:

   clean:清理缓存

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

   makecache:缓存创建

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

 

3、程序包查看:

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

 

       yum list {available|updates|installed|extras|obsoletes|recent} 可用于安装的但本机尚未安装的|可升级的|已安装的|操作系统已安装但不是仓库所提供的|可被废弃的|刚刚加入仓库的新包

 

列出当前系统可用的包组:

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

 

4、程序包安装:install package1 [package2] [...]

 

     Note:只需要提供包名,

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

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

 

5、重新安装(覆盖安装) :reinstall package1 [package2][...]

6、程序包升级: update [package1][package2][...]

7、程序包降级:downgrade package1 [package2] [...]

8、检查有哪些升级可用:check-update

9、卸载:remove | erase package1 [package2] [...]

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

10、查询;

    # yum info php

wKiom1Urrp2wMhtpAAN5JGthC4Y476.jpg

查询程序包的相关简要信息[info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

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

    查询指定文件由哪个程序包安装生成:provides | whatprovides feature1 [feature2] [...]  # yum provides /etc/fstab

  

11、安装或升级本地的程序包文件:

localinstall | localupdate rpmfile1 [rpmfile2] [...]

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

12、包组管理:

列出所有包组:grouplist

    显示指定包组详情:groupinfo group1 [...]   # yum groupinfo "Server Platform Development"

安装:groupinstall group1 [group2] [...]

   卸载:groupremove group1 [group2] [...]

   升级:groupupdate group1 [group2] [...]

可直接用installremoveupdate来管理包组;

@GROUP_NAME

   yum install @"Server Platform Development" 此命令用于安装包组

 

13yum命令的可用选项:

 

     -y:自动回答为"yes"

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

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

     --nogpgcheck:禁止做包校验

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

(1)$releasever:当前OS发行版的主板本号

          例如:对Centos 6.6 x86_64,主板本号为6

      (2)$arch:平台

          i386,i486

      (3)$basearch:基础平台,例如i686 i586 i486以及i386的基础平台同为i386

      (4)$YUM0-$YUM9

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

         当前系统为cnetOS 6.6 x86_64

对应替换为: http://repo.magedu/com/centos/6/x86_64

         6.0 6.1  ln 6 链接指向最新版本

二、配置文件:指向仓库的位置以及相关的各种配置信息,每个yum命令行可以同时指向多个仓库,仓库间可以优先级等相关的配置

有两部分组成:

       主配置文件:/etc/yum.conf

       功用:为各仓库指向提供公共配置文件

 

[root@localhost rpm]# cat /etc/yum.conf

[main]

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0 

debuglevel=2 # 调试级别

logfile=/var/log/yum.log  # 日志文件

exactarch=1  # 当前平台是否绝对一致

obsoletes=1  # 检查包是否被废弃

gpgcheck=1  # 安装前是否检查来源合法性及包完整性

plugins=1

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release

 

#  This is the default, if you make this bigger yum won't see if the metadata

# is newer on the remote and so you'll "gain" the bandwidth of not having to

# download the new metadata and "pay" for it by yum not having correct

# information.

#  It is esp. important, to have correct metadata, for distributions like

# Fedora which don't keep old packages around. If you don't like this checking

# interupting your command line usage, it's much better to have something

# manually check the metadata once an hour (yum-updatesd will do this).

# metadata_expire=90m

 

# PUT YOUR REPOS HERE OR IN separate files named file.repo

# in /etc/yum.repos.d

#############

Note:文件以.repo结尾,每个repo配置文件中可以配置一至多个仓库

 

各仓库的定义:/etc/yum.repos.d/*.repo

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1  # 检查包是否已被废弃

gpgcheck=1  # 安装前检查其来源合法性和包完整性

plugins=1  #是否支持插件

installonly_limit=5 #一次安装成功与否的限制

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum # bug追踪路径

distroverpkg=centos-release #

 

### man yum.conf 查看yum.conf使用

各仓库配置

[repositoryid]

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

name=

    # 当前仓库描述信息:

baseurl=url://path/to/reposisory/

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

 

       url:

         ftp服务:  ftp://SERVER/PATH/REPOSITORY

         http服务: http://SERVER/PATH/REPOSITORY

         本地目录:file:///SERVER/PATH/REPOSITORY

 

    enabled={0|1}

    此仓库是否可被使用

    gpgcheck={1|0}

 

     是否对程序包做校验

 

    gpgkey=url://path/to/keyfile

       指明gpgkey文件路径

cost=#

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

yum仓库配置:以test.repo为例

 

   [basetest]

   name=CentOS 6.6 X86_64 DVD1

   baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/

   gpgcheck=0

   enabled=1

 

   [extratest]

   name=CentOS 6.6 X86_64 DVD2

   baseurl=http://172.16.0.1/centos/6/extras/x86_64/

   gpgcheck=0

   enabled=1

三、自己创建yum仓库:

    (1)在基于发行版安装树安装createrepo 

能够自动读取指定位置下的每个rpm包并抽取其元数据以后保存在元数据文件中的一个专用命令

createrepo /var/test/yum/xen4

    (2)确定repository输出方式:

本地输出:提供一个放置rpm包的本地路径

网络输出:提供一个文件服务器,配置好ftp服务或http服务

               ftp服务:安装程序包:vsftpd

文件存放路径:/var/ftp/pub

                        启动服务:service vsftpd start

               http服务:

安装存放路径:httpd

                        文件存放路径:/var/www/html

启动服务:service httpd start

 

              Note:确保防火墙服务关闭 service iptables stop

 

     (3)再准备好的目录中放置rpm程序包文件

     (4)对此目录运行createrepo命令即可

四、本地仓库创建:local.repo(以光盘作为yum repository)

         

 步骤:

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

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

         [dvdbase]

          name=CentOS 6.6 X86_64 on dvd1

          baseurl=file:///media/cdrom

          gpgcheck=0

          enable=1

 进入/etc/yum.repos.d/目录,执行yum clean all,清理缓存,在执行yum repolist即可显示出已创建的仓库

 

自此可以利用自己创建的yum仓库进行安装软件了。