运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大家喜欢。
今天我们要讲的是 Yum。
一、简介
YUM 是 Yellow dog Updater, Modified 的简称,是杜克大学为了提高 RPM 软件包安装性而开发的一种软件包管理器。它是基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。YUM 的宗旨是自动化地升级,安装/移除RPM包,收集 RPM 包的相关信息,检查依赖性并自动提示用户解决。YUM 的关键之处是要有可靠的软件仓库,它可以是 http 或 ftp 站点,也可以是本地软件池,但必须包含 RPM 的header,header 包括了RPM 包的各种信息,包括描述,功能,提供的文件,依赖性等。
基本语法:
$ yum [options] [command] [package ...]
二、YUM 源
对于 YUM 来说最重要的就是YUM源,查看配置目录后,你会发现/etc/yum.repos.d目录下有非常多以.repo结尾的源文件,每个源文件都代表着一份设置,你可以编辑/etc/yum.repos.d/目录下所有的.repo文件,同时一个源文件里面可以填写多个源地址。一般官方的源文件CentOS-Base.repo下有[base], [updates], [extras]三个源。
YUM源配置字段说明:
- [base] #仓库名称
- name= #仓库描述
- mirrorlist= #仓库镜像路径
- baseurl= #仓库url路径
- enabled= #仓库是否启用,1表示启用,0表示关闭
- gpgcheck=1 #密钥检测,1表示开启,0表示关闭
- gpgkey= #检查key的地址,如果上面不检查,这个可以不写
下面介绍几种常用的源和设置办法。
2.1. 官方源
这个就不多说了,以CentOS为例,如果安装了CentOS的发行版,那么自带的源应该就是官方的,但源是国外的,一般不推荐使用。
[BaseOS]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
2.2. 阿里云源
阿里云是比较推荐的,云服务业务比较大,源镜像比较稳定可靠,推荐使用。
配置方法:
# 1. 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清除缓存
yum clean all
# 4. 生成缓存
yum makecache
# 5. 查看生效后的源地址
yum repolist
2.3. 腾讯云源
配置步骤与阿里云源一样:
# 1. 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
centos6:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.cloud.tencent.com/repo/centos6_base.repo
centos7:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tencent.com/repo/centos7_base.repo
# 3. 清除并生成缓存
yum clean all && yum makecache
# 4. 查看生效后的源地址
yum repolist
2.4. 其他源
其他国内还有华为云、清华大学、网易等等优质YUM源,配置方法均一致。
华为云:wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
清华大学:https://mirrors.tuna.tsinghua.edu.cn/help/centos/
网易:wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
注意:/etc/yum.repos.d/目录下文件名后缀为.repo的文件都是源文件,里面对应的源都需要设置,但最好不要添加太多源,把暂时不用的源通过enabled=0关闭,只留下一个EPEL第三方源,这样可以减少软件的冲突和软件搜索的速度。
三、管理 YUM 存储库
$ yum repolist # 显示启用的软件存储库
$ yum repoinfo rhel-7-server-rpms # 显示有关启用的 yum 存储库的信息
$ yum repo-pkgs my-rpms list # 列出来自 my-rpms 存储库的软件包
$ yum repo-pkgs my-rpms install # 从 my-rpms repo 安装所有软件包
$ yum repo-pkgs my-rpms remove # 从 my-rpms 存储库中删除所有软件包
$ yum makecache # 下载 yum 存储库数据到缓存
四、使用 YUM 管理语言包
$ yum langavailable # 列出已安装的语言
$ yum langinfo es # 列出与西班牙语相关的软件包
$ yum langinstall es # 安装与西班牙语相关的软件包
$ yum langlist # 列出已安装的语言
$ yum langremove es # 删除与西班牙语相关的软件包
五、使用 YUM 管理软件包
5.1. 列出存储库中的包名称
# 列出存储库中的包名称
yum list available
# 列出所有可用的包
yum list installed
# 列出所有已安装的包
yum list all
# 列出已安装和可用的软件包
yum list kernel
5.2. 列出已安装和可用的内核包
# 列出有关 `vsftpd` 软件包的信息
$ yum info vsftpd
5.3. 显示包的依赖项
# 显示包的依赖项
$ yum deplist nfs-utils
# 查找提供查询文件的包
$ yum provides “*bin/top”
# 显示包含 README.top 文件的包
$ yum provides “*/README.top”
5.4. 查找包
# 查找名称或描述中带有 samba 的软件包
$ yum search samba
# 获取有关可用软件包更新的信息
$ yum updateinfo security
5.5. 使用 YUM 安装、删除和升级软件包
# 安装 vsftpd 包
$ yum install vsftpd
# 使用可用更新更新所有软件包
$ yum update
# 更新 httpd 包(如果可用)
$ yum update httpd
# 应用与安全相关的包更新
$ yum update --security
# 更新包考虑过时,只升级所有包,不升级软件和系统内核
$ yum -y upgrade
# 从本地文件、http 或 ftp 安装包
$ yum localinstall abc-1-1.i686.rpm
# 从本地目录安装 abc 包
$ yum localinstall http://myrepo/abc-1-1.i686.rpm
# 将 abc 包降级到早期版本
$ yum downgrade abc
# 重新安装 util-linux(以替换任何已删除的文件)
$ yum reinstall util-linux
# 删除 ftp 包并安装 lftp 包
$ yum swap ftp lftp
# 删除 vsftpd 包和依赖
$ yum remove vsftpd
# 删除 httpd 和其他不需要的包
$ yum autoremove httpd
# 安装 Web 服务器包
$ yum groupinstall "Web server"
5.6. 从 repo 下载一个包到当前目录
# 使用本地源离线安装 net-tools 工具包
$ yumdownloader net-tools.x86_64
# 使用 –destdir 参数设置下载的目标目录
$ yumdownloader net-tools.x86_64 --destdir=/usr/local/bin/
# 使用 –resolve 参数解决依赖关系并下载所需的安装包
$ yumdownloader net-tools.x86_64 --resolve --destdir=/usr/local/bin/
六、YUM 故障排除和维护
# 检查本地 RPM 数据库是否有问题(运行了很长时间)
$ yum check
# 列出所有 yum 安装、更新和清理操作
$ yum history list
# 显示 yum info 3 的详细信息
$ yum history info 3
# 撤消事务 3 中的 yum 操作
$ yum history undo 3
# 重做事务 3 中撤消的 yum 操作
$ yum history redo 3
# 删除缓存中保存的包
$ yum clean packages
# 从缓存中清除所有包和元数据
$ yum clean all
# 列出启用的文件系统过滤器
$ yum fs filters
# 过滤所有正在安装的文档(小心!)
$ yum fs documentation
官方网站:http://yum.baseurl.org/