yum的全称为Yellow dog Updater,Modified.是一个基于RPM的shell前端包管理器,能够从指定的服务器上自动下载并安装或更新软件、删除软件。yum最大的优点是可以自动解决依赖关系。RedHat和Centos的版本为5以上的都会默认安装yum。
1.配置文件
yum的配置文件分为两部分:main和repository
(1)main部分定义了全局配置选项,整个yum配置文件应该只有一个main。常位于/etc/yum.conf中。详细参数如下所示:
cachedir=/var/cache/yum #yum下载的RPM包的缓存目录
keepcache=0 #缓存是否保存,1保存,0不保存。
debuglevel=2 #调试级别(0-10),默认为2
logfile=/var/log/yum.log #yum的日志文件所在的位置
exactarch=1 #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
obsoletes=1 #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck=1 #有1和0两个选择,分别代表是否进行gpg校验。这个选项如果设置在[main]部分,则对每个repository都有效。默认值为0
plugins=1 #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
installonly_limit=3 #允许保留多少个内核包。
exclude=selinux* #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
(2)repository部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d目录下的各文件中。在该目录下,存在以.repo为后缀的文件。repo文件是yum仓库的配置文件后缀,通常一个repo文件中可以设置多个yum仓库源,当安装和升级时yum会读取此配置文件,到yum仓库下载所需的rpm包并安装。
在repo文件中,每一个以方括号开始的部分都是一个"源"。例如在CentOS-Base.repo:
[base]
name=CentOS-$releasever - Base #该源的名字
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #指定一个镜像服务器的地址列表
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ #该源的http地址,baseurl支持http、file、ftp三种
gpgcheck=1 #开启gpg验证
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #定义gpgkey的地址
还有其他参数:
enabled是否启用这个yum仓库地址,0表示不启动,1表示启动。也可通过yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,方便地启用和禁用指定的软件仓库
2.常用命令
yum的命令格式如下:
yum [options] [command] [package]
其中的[options]是可选的,常用选项包括
- -h(帮助)
- -y(当安装过程提示选择全部为"yes")
- -q(不显示安装的过程)
[command]为所要进行的操作
[package …]是操作的对象。
2.1yum repolist命令
显示所有仓库:
[root@node1 yum.repos.d]# yum repolist all
已加载插件:langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
源标识 源名称 状态
C7.0.1406-base/x86_64 CentOS-7.0.1406 - Base 禁用
C7.0.1406-centosplus/x86_64 CentOS-7.0.1406 - CentOSPlus 禁用
C7.0.1406-extras/x86_64 CentOS-7.0.1406 - Extras 禁用
C7.7.1908-centosplus/x86_64 CentOS-7.7.1908 - CentOSPlus 禁用
C7.7.1908-extras/x86_64 CentOS-7.7.1908 - Extras 禁用
C7.7.1908-fasttrack/x86_64 CentOS-7.7.1908 - Fasttrack 禁用
C7.7.1908-updates/x86_64 CentOS-7.7.1908 - Updates 禁用
!base/7/x86_64 CentOS-7 - Base 启用: 10,072
base-debuginfo/x86_64 CentOS-7 - Debuginfo 禁用
base-source/7 CentOS-7 - Base Sources 禁用
c7-media CentOS-7 - Media 禁用
centos-kernel/7/x86_64 CentOS LTS Kernels for x86_64 禁用
centos-kernel-experimental/7/x86_64 CentOS Experimental Kernels for x86_64 禁用
centosplus/7/x86_64 CentOS-7 - Plus 禁用
centosplus-source/7 CentOS-7 - Plus Sources 禁用
cr/7/x86_64 CentOS-7 - cr 禁用
!extras/7/x86_64 CentOS-7 - Extras 启用: 448
extras-source/7 CentOS-7 - Extras Sources 禁用
fasttrack/7/x86_64 CentOS-7 - fasttrack 禁用
!updates/7/x86_64 CentOS-7 - Updates 启用: 1,158
updates-source/7 CentOS-7 - Updates Sources 禁用
repolist: 11,678
显示所有可用的仓库:
[root@node1 yum.repos.d]# yum repolist enabled
已加载插件:langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
源标识 源名称 状态
!base/7/x86_64 CentOS-7 - Base 10,072
!extras/7/x86_64 CentOS-7 - Extras 448
!updates/7/x86_64 CentOS-7 - Updates 1,158
repolist: 11,678
2.2 yum 安装命令
安装命令格式:
yum install PACKAGE #安装某个包
yum groupinstall GROUP #安装某个软件组
例如:安装httpd服务
[root@node1 ~]# yum install httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 3.6 kB 00:00:00
* base: mirrors.huaweicloud.com
* epel: ftp.riken.jp
* extras: mirrors.huaweicloud.com
* updates: mirrors.huaweicloud.com
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/3): updates/7/x86_64/primary_db | 7.1 MB 00:00:01
(2/3): epel/x86_64/updateinfo | 1.0 MB 00:00:39
(3/3): epel/x86_64/primary_db | 6.9 MB 00:06:14
2.3 yum 升级命令
更新命令如下:
yum update #更新系统中所有需要更新的包
yum update PACKAGE #更新某个包
例如:更新httpd服务
2.4 yum 查找命令
查找命令如下:
yum list #显示软件源中可用的包
yum list installed #显示系统中已经安装过的包
yum info PACKAGE #显示某个包的信息
例如:
[root@node1 yum.repos.d]# yum list installed
已加载插件:langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
已安装的软件包
GConf2.x86_64 3.2.6-8.el7 @anaconda
GeoIP.x86_64 1.5.0-11.el7 @anaconda
ModemManager.x86_64 1.6.10-1.el7 @anaconda
ModemManager-glib.x86_64 1.6.10-1.el7 @anaconda
MySQL-python.x86_64 1.2.5-1.el7 @linkoop-yum-http
NetworkManager.x86_64 1:1.10.2-13.el7 @anaconda
NetworkManager-adsl.x86_64 1:1.10.2-13.el7 @anaconda
NetworkManager-glib.x86_64 1:1.10.2-13.el7 @anaconda
NetworkManager-libnm.x86_64 1:1.10.2-13.el7 @anaconda
NetworkManager-libreswan.x86_64 1.2.4-2.el7 @anaconda
NetworkManager-libreswan-gnome.x86_64 1.2.4-2.el7 @anaconda
NetworkManager-ppp.x86_64 1:1.10.2-13.el7 @anaconda
NetworkManager-team.x86_64 1:1.10.2-13.el7 @anaconda
NetworkManager-tui.x86_64 1:1.10.2-13.el7 @anaconda
NetworkManager-wifi.x86_64 1:1.10.2-13.el7 @anaconda
PackageKit.x86_64 1.1.5-1.el7.centos @anaconda
PackageKit-command-not-found.x86_64 1.1.5-1.el7.centos @anaconda
PackageKit-glib.x86_64 1.1.5-1.el7.centos @anaconda
2.5 yum 删除命令
删除命令如下:
yum remove PACKAGE #删除某个包
yum groupremove GROUP #删除某个软件组
2.6 yum 清除命令
命令如下:
yum clean #清除使用yum所生成的缓存文件
3.更换yum源
例如:更换成阿里云yum源:
1)备份当前yum源防止出现意外还可以还原回来
cd /etc/yum.repos.d/
cp /CentOS-Base.repo /CentOS-Base-repo.bak
2)使用wget下载阿里yum源repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
3)清理旧包
yum clean all
4)把下载下来阿里云repo文件设置成为默认源
mv Centos-7.repo CentOS-Base.repo
5)生成阿里云yum源缓存并更新yum源
yum makecache
yum update