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