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
完毕!