rpm工具只能进行rpm包的本地安装和卸载,而没有解决远程安装和解决依赖等问题,因此YUM应运而生。
YUM是Yellow dog Updater, Modified的缩写,是一个在RedHat、Fedora、Centos和Oracle Linux下的软件包管理器。
YUM的软件管理是基于RPM包的,它从指定的服务器下载RPM包并且安装,这些软件来自于Linux开源社区,基本都是自由软件。
YUM能够自动处理软件包依赖关系,并且自动进行依赖包的安装,非常方便。
- YUM语法YUM的语法格式为
yum [options] [command] [package ...]
,重要可选项有:
可选项 | 含义 |
-h | 显示帮助信息 |
-y | 安装过程中所有的提问都回答yes |
-c | 指定配置文件 |
-v | 详细模式 |
-q | 安静模式 |
-C | 安全从缓存运行,不下载或者更新任何头文件 |
- command常见参数有:
命令 | 含义 |
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 列出所有可更新的软件清单命令 |
remove | 删除软件包 |
list | 列出所有可安裝的软件清单命令 |
search | 查找软件包 |
info | 显示指定的rpm软件包的描述和概要信息 |
clean | 清理yum过期缓存 |
shell | 进入yum的shell描述符 |
resolvedep | 显示rpm软件包的依赖关系 |
localinstall | 安装本地的rpm软件包 |
localupdate | 显示本地rpm软件包进行更新 |
deplist | 显示所有的软件包依赖 |
groupinstall | 安装程序组 |
groupupdate | 更新程序组 |
groupremove | 卸载程序组 |
groupinfo | 查看程序组信息 |
- 常用的用法如下:
- 安装软件包
[root@node1]# yum install <package_name>
- 清除缓存目录下的软件包
[root@node1]# yum clean packages
- 清除缓存目录下的headers
[root@node1]# yum clean headers
- 清除缓存目录下旧的headers
[root@node1]# yum clean oldheaders
- 清除缓存
[root@node1]# yum clean
- 或者
[root@node1]# yum clean all
- 相当于
yum clean packages;yum clean oldheaders
。 - 卸载软件包
[root@node1]# yum remove <package_name>
- 查找软件包
[root@node1]# yum search <keyword>
- 列出所有可更新的软件清单
[root@node1]# yum check-update
- 更新所有软件
[root@node1]# yum update
- 或者
[root@node1]# yum upgrade
- update和upgrade都是更新软件包,区别在于upgrade会删除旧的软件包,而update则会保留。
- 更新指定软件
[root@node1]# yum update <package_name>
- 列出所有可安装的软件清单
[root@node1]# yum list
- 列出所有已安装的软件清单
[root@node1]# yum list installed
- YUM配置yum配置文件位置为/etc/yum.conf,默认内容如下:
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
#启用gpg校验
gpgcheck=1
# 启用yum插件
plugins=1
pkgpolicy=newest
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
- 可以看到这里配置了缓存的目录cachedir和日志目录logfile,其中缓存目录引用了两个变量basearch和releasever,其中basearch是我们的系统硬件架构CPU指令集,可以使用命令`arch`获得,而releasever表示的是系统的发行版本,使用命令
rpm -qi centos-release
可以获得,以本人当前系统为例:
[root@node1]# arch
x86_64
[root@node1]# rpm -qi centos-release
Name : centos-release
Version : 7
Release : 7.1908.0.el7.centos
Architecture: x86_64
Install Date: Sun 12 Jan 202001:15:37 AM CST
Group : System Environment/Base
Size : 42295
License : GPLv2
Signature : RSA/SHA256, Thu 05 Sep 201909:19:24 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : centos-release-7-7.1908.0.el7.centos.src.rpm
Build Date : Thu 05 Sep 201909:05:40 PM CST
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
Summary : CentOS Linux release file
Description :
CentOS Linux release files
- 配置YUM源yum从远程镜像源仓库拉取软件,Linux发行版默认都会提供一个yum源,例如Centos下的mirrorlist.centos.org,默认的源配置以.repo为文件格式后缀的配置文件存储在/etc/yum.repos.d目录下。以nginx repo为例,repo文件的格式如下:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
- [nginx]为serviceid,用于区分不同的repository
- name为repository的名称,描述信息
- baseurl最为重要,是获取软件的路径
- pgpcheck表示是否进行gpg校验,1为启动gpg,0为不启用
- enabled 表示是否启动,1为启动,0为禁用
- 创建新的repo文件以后,使用
yum clean all;yum makecache
重建yum缓存。
当多个repo文件配置的repo仓库都有同一个软件时,将会根据yum.conf配置文件中的pkgpolicy
配置项决定从哪个repo拉取软件包,默认情况下是newest,从最新版本的repo拉取,pkgpolicy
的值还可以是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。 - yum fastmirror
fastestmirror是yum提供的插件,用于在配置了多个repository的情况下探测决定哪个repository是速度最快的,这个插件非常有用,能够显著提高安装速度。
想要使用fastestmirror,则在repo配置文件中不能使用baseurl指定软件包服务器地址,而是要使用mirrorlist代替baseurl。
如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/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- 当使用yum命令的时候可以看到以下输出,代表已经使用了fastestmirror。
[root@node1]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile