yum

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

其是RedHat系列发行版的软件安装命令是yum,debian系列使用的是apt-get。

yum的使用

yum安装软件的需要依存一个来源,而那个来源就叫做软件仓库,又称yum源,其配置文件位于/etc/yum.repos.d/目录下。

根据来源将yum的搭建方式分为两种,网络和本地。

本地yum

本地yum源,不需要网络,只需要将系统安装镜像挂载到系统中,然后通过修改yum源文件来更改我们的yum源。

查看一下/etc/yum.repos.d/目录,发现里面已经有很多配置文件了,这些是CentOS发行版中自带的网络yum源。

[root@linus yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo

既然要搭建本地yum源,那么这些我们自然也是不需要了,通常情况下,创建一个备份,然后将其删除。

[root@linus yum.repos.d]# tar -zcf yum.tar.gz CentOS-*
[root@linus yum.repos.d]# rm -rf CentOS-*
[root@linus yum.repos.d]# ls
yum.tar.gz

然后开始创建我们的本地yum源文件,任意名称都可,但后缀必须要以.repo结尾,然后开始编辑。

[root@linus yum.repos.d]# touch yum.repo
[root@linus yum.repos.d]# vim yum.repo 	#等于号后面为参数
[yum]		#模块名,可变
name=yum		#名称,可变
baseurl=file:///mnt	#系统安装镜像挂载位置,可变
gpgcheck=0	#不开启密钥验证,1为开启,可以没有这一项
enabled=1		#开启,0为关闭

接下来挂载我们的系统安装光盘,你写的是什么位置,就挂载在哪里,我写的是/mnt目录,所以把镜像挂载到/mnt目录下。

[root@linus yum.repos.d]# mount /dev/cdrom /mnt/

然后我们清除缓存,并且重新搭建yum源仓库。

[root@linus yum.repos.d]# yum clean all 
已加载插件:fastestmirror, langpacks
正在清理软件源: yum
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
[root@linus yum.repos.d]# yum makecache 
已加载插件:fastestmirror, langpacks
yum                                                   | 3.6 kB     00:00     
(1/4): yum/group_gz                                     | 156 kB   00:00     
(2/4): yum/primary_db                                   | 3.1 MB   00:00     
(3/4): yum/filelists_db                                 | 3.1 MB   00:00     
(4/4): yum/other_db                                     | 1.2 MB   00:00     
Determining fastest mirrors
元数据缓存已建立

安装一个http测试一下

[root@linus yum.repos.d]# yum install -y httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-67.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-67.el7.centos,它被软件包 httpd-2.4.6-67.el7.centos.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-67.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 httpd-tools.x86_64.0.2.4.6-67.el7.centos 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

======================================================================================================================================
 Package                          架构                        版本                                     源                        大小
======================================================================================================================================
正在安装:
 httpd                            x86_64                      2.4.6-67.el7.centos                      yum                      2.7 M
为依赖而安装:
 httpd-tools                      x86_64                      2.4.6-67.el7.centos                      yum                       87 k
 mailcap                          noarch                      2.1.41-2.el7                             yum                       31 k

事务概要
======================================================================================================================================
安装  1 软件包 (+2 依赖软件包)

总下载量:2.8 M
安装大小:9.6 M
Downloading packages:
--------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                  9.9 MB/s | 2.8 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : httpd-tools-2.4.6-67.el7.centos.x86_64                                                                            1/3 
  正在安装    : mailcap-2.1.41-2.el7.noarch                                                                                       2/3 
  正在安装    : httpd-2.4.6-67.el7.centos.x86_64                                                                                  3/3 
  验证中      : httpd-2.4.6-67.el7.centos.x86_64                                                                                  1/3 
  验证中      : mailcap-2.1.41-2.el7.noarch                                                                                       2/3 
  验证中      : httpd-tools-2.4.6-67.el7.centos.x86_64                                                                            3/3 

已安装:
  httpd.x86_64 0:2.4.6-67.el7.centos                                                                                                  

作为依赖被安装:
  httpd-tools.x86_64 0:2.4.6-67.el7.centos                                mailcap.noarch 0:2.1.41-2.el7                               

完毕!

这个是本地yum源搭建,接下来是网络yum源。

网络yum源

这个就比较简单了,还记得我们之前打包的那些配置文件吗,那都是系统默认的yum源文件,里面保存的是一个一个的软件地址,通过网络从软件服务器中下载软件包,这种方式只有一个要求,你必须要有网络,若是离线状态,还是搭本地吧。

网络yum源根本无需配置,直接可以使用。
首先ping一下百度,看看有没有网络

[root@test2 ~]# ping -c 2 www.baidu.com
PING www.baidu.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=52 time=22.9 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=52 time=21.6 ms

--- www.baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 21.662/22.301/22.940/0.639 ms

接下来使用网络yum源安装一个http

[root@test2 ~]# yum install -y httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.cn99.com
 * updates: mirrors.huaweicloud.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-90.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-90.el7.centos,它被软件包 httpd-2.4.6-90.el7.centos.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-90.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 httpd-tools.x86_64.0.2.4.6-90.el7.centos 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

======================================================================================================================================
 Package                         架构                       版本                                       源                        大小
======================================================================================================================================
正在安装:
 httpd                           x86_64                     2.4.6-90.el7.centos                        base                     2.7 M
为依赖而安装:
 httpd-tools                     x86_64                     2.4.6-90.el7.centos                        base                      91 k
 mailcap                         noarch                     2.1.41-2.el7                               base                      31 k

事务概要
======================================================================================================================================
安装  1 软件包 (+2 依赖软件包)

总下载量:2.8 M
安装大小:9.6 M
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/mailcap-2.1.41-2.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
mailcap-2.1.41-2.el7.noarch.rpm 的公钥尚未安装
(1/3): mailcap-2.1.41-2.el7.noarch.rpm                                                                         |  31 kB  00:00:00     
(2/3): httpd-tools-2.4.6-90.el7.centos.x86_64.rpm                                                              |  91 kB  00:00:00     
(3/3): httpd-2.4.6-90.el7.centos.x86_64.rpm                                                                    | 2.7 MB  00:00:01     
--------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                  1.6 MB/s | 2.8 MB  00:00:01     
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
 用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 软件包     : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda)
 来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                            1/3 
  正在安装    : mailcap-2.1.41-2.el7.noarch                                                                                       2/3 
  正在安装    : httpd-2.4.6-90.el7.centos.x86_64                                                                                  3/3 
  验证中      : mailcap-2.1.41-2.el7.noarch                                                                                       1/3 
  验证中      : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                            2/3 
  验证中      : httpd-2.4.6-90.el7.centos.x86_64                                                                                  3/3 

已安装:
  httpd.x86_64 0:2.4.6-90.el7.centos                                                                                                  

作为依赖被安装:
  httpd-tools.x86_64 0:2.4.6-90.el7.centos                                mailcap.noarch 0:2.1.41-2.el7                               

完毕!

国内yum源

系统默认的yum源配置文件,其中的地址是国外的,下载起来比较慢,推荐使用国内的yum源地址,将以下两个yum源任意一个复制到/etc/yum.repos.d/即可。

[root@test2 ~]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo	#163的yum源文件
[root@test2 ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo	#阿里的yum源文件

就拿网易的yum源为例,更换成国内yum源,首先将/etc/yum.repos.d/下的配置文件清空,或者备份删除,然后将网易yum源放入此目录。

[root@test2 ~]# rm -rf /etc/yum.repos.d/*
[root@test2 ~]# cp CentOS7-Base-163.repo /etc/yum.repos.d/

清除原来的yum源缓存,重新搭建yum源缓存数据。

[root@test2 ~]# yum clean all 
已加载插件:fastestmirror, langpacks
正在清理软件源: base extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@test2 ~]# yum makecache 
已加载插件:fastestmirror, langpacks
base                                                  | 3.6 kB     00:00     
extras                                                | 2.9 kB     00:00     
updates                                               | 2.9 kB     00:00     
(1/10): base/7/x86_64/group_gz                          | 165 kB   00:00     
(2/10): base/7/x86_64/filelists_db                      | 7.3 MB   00:04     
(3/10): base/7/x86_64/primary_db                        | 6.0 MB   00:04     
(4/10): extras/7/x86_64/primary_db                      | 164 kB   00:01     
(5/10): extras/7/x86_64/filelists_db                    | 216 kB   00:01     
(6/10): extras/7/x86_64/other_db                        | 106 kB   00:00     
(7/10): base/7/x86_64/other_db                          | 2.6 MB   00:01     
(8/10): updates/7/x86_64/filelists_db                   | 4.4 MB   00:02     
(9/10): updates/7/x86_64/other_db                       | 562 kB   00:00     
(10/10): updates/7/x86_64/primary_db                    | 7.5 MB   00:06     
Determining fastest mirrors
元数据缓存已建立

安装一个dhcp测试一下

[root@test2 ~]# yum install -y dhcp
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 dhcp.x86_64.12.4.2.5-77.el7.centos 将被 安装
--> 正在处理依赖关系 dhcp-libs(x86-64) = 12:4.2.5-77.el7.centos,它被软件包 12:dhcp-4.2.5-77.el7.centos.x86_64 需要
--> 正在处理依赖关系 dhcp-common = 12:4.2.5-77.el7.centos,它被软件包 12:dhcp-4.2.5-77.el7.centos.x86_64 需要
--> 正在处理依赖关系 libisc-export.so.169()(64bit),它被软件包 12:dhcp-4.2.5-77.el7.centos.x86_64 需要
--> 正在处理依赖关系 libdns-export.so.1102()(64bit),它被软件包 12:dhcp-4.2.5-77.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 bind-export-libs.x86_64.32.9.11.4-9.P2.el7 将被 安装
---> 软件包 dhcp-common.x86_64.12.4.2.5-58.el7.centos 将被 升级
--> 正在处理依赖关系 dhcp-common = 12:4.2.5-58.el7.centos,它被软件包 12:dhclient-4.2.5-58.el7.centos.x86_64 需要
---> 软件包 dhcp-common.x86_64.12.4.2.5-77.el7.centos 将被 更新
---> 软件包 dhcp-libs.x86_64.12.4.2.5-58.el7.centos 将被 升级
---> 软件包 dhcp-libs.x86_64.12.4.2.5-77.el7.centos 将被 更新
--> 正在检查事务
---> 软件包 dhclient.x86_64.12.4.2.5-58.el7.centos 将被 升级
---> 软件包 dhclient.x86_64.12.4.2.5-77.el7.centos 将被 更新
--> 解决依赖关系完成

依赖关系解决

=============================================================================
 Package              架构       版本                         源        大小
=============================================================================
正在安装:
 dhcp                 x86_64     12:4.2.5-77.el7.centos       base     514 k
为依赖而安装:
 bind-export-libs     x86_64     32:9.11.4-9.P2.el7           base     1.1 M
为依赖而更新:
 dhclient             x86_64     12:4.2.5-77.el7.centos       base     285 k
 dhcp-common          x86_64     12:4.2.5-77.el7.centos       base     176 k
 dhcp-libs            x86_64     12:4.2.5-77.el7.centos       base     133 k

事务概要
=============================================================================
安装  1 软件包 (+1 依赖软件包)
升级           ( 3 依赖软件包)

总下载量:2.2 M
Downloading packages:
No Presto metadata available for base
警告:/var/cache/yum/x86_64/7/base/packages/dhclient-4.2.5-77.el7.centos.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
dhclient-4.2.5-77.el7.centos.x86_64.rpm 的公钥尚未安装
(1/5): dhclient-4.2.5-77.el7.centos.x86_64.rpm          | 285 kB   00:00     
(2/5): bind-export-libs-9.11.4-9.P2.el7.x86_64.rpm      | 1.1 MB   00:00     
(3/5): dhcp-common-4.2.5-77.el7.centos.x86_64.rpm       | 176 kB   00:00     
(4/5): dhcp-libs-4.2.5-77.el7.centos.x86_64.rpm         | 133 kB   00:00     
(5/5): dhcp-4.2.5-77.el7.centos.x86_64.rpm              | 514 kB   00:00     
-----------------------------------------------------------------------------
总计                                            1.9 MB/s | 2.2 MB  00:01     
从 http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
 用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 来自       : http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : 12:dhcp-libs-4.2.5-77.el7.centos.x86_64                  1/8 
  正在更新    : 12:dhcp-common-4.2.5-77.el7.centos.x86_64                                                                         2/8 
  正在安装    : 32:bind-export-libs-9.11.4-9.P2.el7.x86_64                                                                        3/8 
  正在安装    : 12:dhcp-4.2.5-77.el7.centos.x86_64                                                                                4/8 
  正在更新    : 12:dhclient-4.2.5-77.el7.centos.x86_64                                                                            5/8 
  清理        : 12:dhclient-4.2.5-58.el7.centos.x86_64                                                                            6/8 
  清理        : 12:dhcp-common-4.2.5-58.el7.centos.x86_64                                                                         7/8 
  清理        : 12:dhcp-libs-4.2.5-58.el7.centos.x86_64                                                                           8/8 
  验证中      : 32:bind-export-libs-9.11.4-9.P2.el7.x86_64                                                                        1/8 
  验证中      : 12:dhcp-4.2.5-77.el7.centos.x86_64                                                                                2/8 
  验证中      : 12:dhcp-common-4.2.5-77.el7.centos.x86_64                                                                         3/8 
  验证中      : 12:dhclient-4.2.5-77.el7.centos.x86_64                                                                            4/8 
  验证中      : 12:dhcp-libs-4.2.5-77.el7.centos.x86_64                                                                           5/8 
  验证中      : 12:dhcp-common-4.2.5-58.el7.centos.x86_64                                                                         6/8 
  验证中      : 12:dhcp-libs-4.2.5-58.el7.centos.x86_64                                                                           7/8 
  验证中      : 12:dhclient-4.2.5-58.el7.centos.x86_64                                                                            8/8 

已安装:
  dhcp.x86_64 12:4.2.5-77.el7.centos                                                                                                  

作为依赖被安装:
  bind-export-libs.x86_64 32:9.11.4-9.P2.el7                                                                                          

作为依赖被升级:
  dhclient.x86_64 12:4.2.5-77.el7.centos     dhcp-common.x86_64 12:4.2.5-77.el7.centos     dhcp-libs.x86_64 12:4.2.5-77.el7.centos    

完毕!

这样就更换完成了。

这两种方式各有利弊:
首先本地yum源搭建,优点是安装速度快,效率高,缺点是在系统镜像中没有的软件包无法安装。

而网络yum源的方式呢,缺点就是安装速度慢,优点远远大于缺点,最直接的一个就是可以安装系统镜像中没有的软件包,而且还可以替换旧的软件包,将其升级为新的软件包,就拿安装dhcp软件包来说,你会发现其中有更新,还有清理,那就是安装新的软件包,然后把旧的给删除掉。

yum命令使用

格式:yum 操作 [选项]
注:选项在前,操作在后也可以

常用操作

清空所有缓存:clean all
重新生成包信息缓存:makecache
安装指定软件包:install
安装一组软件包:groupinstall
更新指定软件包:update
卸载指定软件包:remove
卸载一组软件包:groupremove
搜索指定软件:search或者search all
显示所有软件:list

常用选项

默认确定操作:-y
只下载不安装:-downloadonly
指定下载目录:–downloadddir

实例

我只列举了一些常用的操作和选项,其实他们的操作还有很多,这里就拿一些常用的使用举例。

搜索lrzsz软件包

[root@test2 ~]# yum search all -y lrzsz
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
==================================== 匹配:lrzsz =====================================
lrzsz.x86_64 : The lrz and lsz modem communications programs

列出所有的lrzsz软件

[root@test2 ~]# yum list  -y lrzsz
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
lrzsz.x86_64                            0.12.20-36.el7                            base

安装lrzsz软件包

[root@test2 ~]# yum install -y lrzsz
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 lrzsz.x86_64.0.0.12.20-36.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

======================================================================================
 Package          架构              版本                        源               大小
======================================================================================
正在安装:
 lrzsz            x86_64            0.12.20-36.el7              base             78 k

事务概要
======================================================================================
安装  1 软件包

总下载量:78 k
安装大小:181 k
Downloading packages:
lrzsz-0.12.20-36.el7.x86_64.rpm                                |  78 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : lrzsz-0.12.20-36.el7.x86_64                                       1/1 
  验证中      : lrzsz-0.12.20-36.el7.x86_64                                       1/1 

已安装:
  lrzsz.x86_64 0:0.12.20-36.el7                                                       

完毕!

卸载lrzsz软件包

[root@test2 ~]# yum remove  -y lrzsz
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 lrzsz.x86_64.0.0.12.20-36.el7 将被 删除
--> 解决依赖关系完成

依赖关系解决

======================================================================================
 Package          架构              版本                       源                大小
======================================================================================
正在删除:
 lrzsz            x86_64            0.12.20-36.el7             @base            181 k

事务概要
======================================================================================
移除  1 软件包

安装大小:181 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在删除    : lrzsz-0.12.20-36.el7.x86_64                                       1/1 
  验证中      : lrzsz-0.12.20-36.el7.x86_64                                       1/1 

删除:
  lrzsz.x86_64 0:0.12.20-36.el7                                                       

完毕!