上一篇说了CentOS后台包管理程序rpm,但是rpm最为人诟病的一点就是不能自己解决包与包之间的依赖关系。为此,yum可以说是CentOS上最受欢迎的包管理器了。yum是CentOS上前端的包管理工具。

先来看看yum是怎么工作的。

centos是什么cpu centos用来干什么_centos是什么cpu

yum是一个C/S架构的应用程序。首先,yum客户端向远程yum服务器发起请求,申请操作,服务器接收请求,在本地查询repodata(元数据文件)中对应的包的相关信息,然后对于该包进行安全认证,查询其gpg-key,一同由服务器返回给客户端。由此,一次简单的yum操作就完成了。那既然是C/S架构的应用程序,就有配置文件信息 。来看看yum客户端的配置信息。

yum的配置文件/etc/yum.conf; /etc/yum.repos.d/*.conf

先来看看yum客户端配置文件/etc/yum.conf的配置文件语法吧

[main]
cachedir=/var/cache/yum/$basearch/$releasever     #缓存存放的目录
keepcache=0                                       #缓存是否保存[0|1]
debuglevel=2                                      #调试级别(0-10)默认2
logfile=/var/log/yum.log                          #日志文件位置
exactarch=1                                       #更新的时候是否更新不同版本的包
obsoletes=1                                       #update参数允许更新旧的rpm包
gpgcheck=1                                        #是否检查gpg-key(秘钥)
plugins=1                                         #是否开启插件
installonly_limit=5                               #允许同时最多安装几个包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release                       #bug提交网址


#  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

/etc/yum.repos.d/目录下定义yum仓库,以.repo结尾,我在该目录下定义了5个yum仓库,分别是yum的官方仓库CentOS-Base.repo,docker-ce的官方仓库docker-ce.repo,内核仓库elrepo.repo,epel仓库epel.repo,还有一个我自己定义的清华大学的Centos包镜像仓库Tsinghua.repo

[root@docker yum.repos.d]# ll 
总用量 24
-rw-r--r-- 1 root root  675 8月  17 13:07 CentOS-Base.repo
-rw-r--r-- 1 root root 2424 8月  16 16:47 docker-ce.repo
-rw-r--r-- 1 root root 2142 7月  24 2017 elrepo.repo
-rw-r--r-- 1 root root  230 8月  17 13:07 epel.repo
-rw-r--r-- 1 root root  968 9月   7 15:00 Tsinghua.repo

这里就以其中的官方仓库的配置来进行说明

[base]                            #设置该段的标签
name=CentOS-$releasever           #base段的注释信息
enabled=1                         #是否启用该仓库[0|1]如果没有设置该字段,默认为1
failovermethod=priority           #baseurl有多个地址采用什么查询方式priority优先级方式
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/ #远程仓                    
                                                                           库的地址
gpgcheck=1                        #是否启用秘钥检查[0|1]
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7 #秘钥文件的地址

[updates]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

这里每一段的配置基本都一样,这里也可以设置为自己搭建的yum仓库的地址,只需要设置正确即可。到此,yum的基本设置就结束了,下面来看看yum命令的一些常见用法。

安装、升级包:

#yum install [options] package_name 

    options:
        -y|--assumeyes:所有回答都是yes,直接安装包
        -q|--quiet:静默安装
        --nogpgcheck:不进行验证
        --enablerepo=repoid 临时启用该仓库
        --disablerepo=repoid 临时禁用该仓库
        --noplugins       禁用所有插件
常用的命令组合
   # yum install -y package_name
如果远程包秘钥签名验证失败,而且不是很在意其安全性,可以使用--nogpgcheck跳过检查秘钥阶段
   #yum install --nogpgcheck -y package_name
   #yum update|upgrade package_name  升级包
   #yum check-update  检查可用升级
   #yum reinstall pkg_name 重新安装
   #yum localinstall 安装本地rpm包,可以自动解决依赖关系
   #yum localupdate  使用本地包升级
   #yum downgrade pkg_name 进行降级操作

查询包:

#yum list [all|available|updates|installed|extras|obsoletes] 列出符合条件的程序包
        all 所有包
        available 可用的
        installed 已经安装的
        updates   可升级的
        extras    额外的包
        obsoletes 废弃的包
#yum repolist [all|enabled|disabled] 列出符合条件的仓库列表
            all 所有的
            enabled 已经使用的
            disabled 禁用的仓库    
#yum info package_name 查询包信息
#yum provides capability 查询哪个功能是由哪个包提供的类似rpm --whatprovides capability 
#yum search string 搜索包以及相关包的摘要信息
#yum deplist pkg_name 查看包的依赖
#yum history 查看yum的事务历史<事务型数据库>

移除包:

#yum remove|erase package_name  同时会卸载所有依赖的包

 缓存相关操作:

#yum makecache 生成yum缓存,提升安装时的速度
#yum clean [packages|metdata|expire-cache|rpmdb|plugins|all] 清除所选项的缓存

yum还支持包组的概念,即将用途差不多的包集合在一起组成包组方便下载:

#yum grouplist [installed|available|all]显示所选项的包组
#yum groupinfo group_name 显示包组信息
#yum groupinstall group_name 安装包组
#yum groupremove group_name 卸载包组