这里我使用的 Linux 为 CentOS Stream 9
在红帽系列的 Linux 中,使用 yum 工具帮助我们管理和下载安装 rpm 软件包,并帮助我们自动解决 rpm 软件包之间的依赖关系。
比如,我们现在要使用 yum 下载安装 MySQL,yum 工具发现其依赖 MySQL-common 就会帮我们去下载安装 MySQL-common,如果还依赖其他,也会帮助我们下载安装,最后直到帮我们完成 MySQL 的安装。
所以在红帽系列的 Linux 中,我们如果需要安装软件可以直接使用 yum 工具来帮我们安装。
yum 工具的工作机制
yum 总的来说,分为服务器端和客户端。
服务器端:比如阿里云的 yum 镜像仓库所在的机器,在服务器上面存放了所有的 rpm 软件包,然后以相关的功能去分析每个 rpm 文件之间的依赖关系,并将这些数据记录成文件存放在服务器的某特定目录内。
客户端:可以理解为我们使用的 CentOS 操作系统就是一个客户端,需要使用 yum 向服务器端请求下载 rpm 软件包,如果我们需要安装某个软件时,yum 会先下载服务器上面记录了 rpm 软件包之间的依赖关系的文件(可通过 WWW 或 FTP 方式),然后通过对服务器端下载的记录了 rpm 软件包之间依赖关系的文件进行分析,然后依据该文件去下载所有相关的软件,将所有相关软件全部下载下来,进行安装。
yum 工具的配置文件
yum 工具的配置文件在 /etc/yum.conf,在 yum 工具的配置文件中对 yum 工具下载、安装、删除软件包等操作进行总体上的配置。
一般情况下,我们不对 yum 工具的配置文件中的内容进行修改
如下是默认情况下,CentOS Stream 9 中 yum 工具的配置文件中的内容:
更多配置项及其解释可以参考:https://www.cnblogs.com/f1194361820/p/8573857.html
bash
[root@Jenkins yum.repos.d]# cat /etc/yum.conf
[main]
# 检查软件包的合法性
gpgcheck=1
# 可以同时安装软件包的个数
installonly_limit=3
# 在删除软件包时检查每个包的依赖项,如果删除的软件包的依赖包不被
# 其他包依赖,是否删除这些不被依赖的包,默认值 False
clean_requirements_on_remove=True
best=True
# 如果无法访问当前 yum 镜像仓库,是否继续运行 yum
# 如果设置为 True,yum 无法访问当前镜像仓库,继续运行,
# 会咨询配置的其他镜像仓库
skip_if_unavailable=False
yum 工具的镜像仓库源配置文件
yum 工具下载 rpm 软件包的镜像仓库可以配置多个,即可以同时存在多个 yum 工具镜像仓库源配置文件,yum 工具的镜像仓库源配置文件存放在 /etc/yum.repos.d 目录中
如果同时存在多个 yum 工具镜像仓库源配置文件,即配置了多个 yum 工具下载 rpm 软件包的镜像仓库,yum 会自动选择软件版本最新的,以及优先选择离我们近的仓库下载
对于 yum 工具镜像仓库源配置文件中的配置内容,只对 /etc/yum.repos.d/centos.repo 文件中的部分进行说明,其他部分都差不多
更多配置项及其解释可以参考:https://www.cnblogs.com/f1194361820/p/8573857.html
bash
[root@Jenkins yum.repos.d]# cat /etc/yum.repos.d/centos.repo
[baseos]
# 当前 yum 工具下载镜像仓库中 baseos 镜像源名称
# $releasever 可以获取到当操作系统发行版版本的系统变量
name=CentOS Stream $releasever - BaseOS
# 镜像源地址
# $stream 可以获取到当操作系统发行版的系统变量
# $basearch &arch 可以获取到当操作系统架构的系统变量
metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http
# 软件包下载源公钥的下载地址
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
# 是否检查密钥,防止下载镜像源被篡改,以确保下资源的正确
gpgcheck=1
# 是否对此镜像仓库中的 repodate 执行 GPG 签名检查
repo_gpgcheck=0
# 覆盖此镜像仓库的 [main] 部分中的 metadata_expire 选项
# yum 元数据过期时间
# 当前 yum 下载源镜像仓库元数据更新时间
metadata_expire=6h
countme=1
# 是否启用当前配置的镜像仓库中的此镜像源,即是否启用 baseos 整个配置项
enabled=1
更换 yum 工具的镜像仓库
由于阿里云镜像开源网站对于 CentOS Stream 9 配置 yum 阿里云镜像仓库(https://developer.aliyun.com/mirror/centos-stream?spm=a2c6h.13651104.d-2001.10.6259320cuODYGX),没有像 CentOS 7 那样提供命令直接进行配置,目前需要我们手动添加 yum 工具镜像仓库的配置文件。
所以这里先对 CentOS 7 配置 yum 阿里云镜像仓库(https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11kLbub8)进行说明。
CentOS 7 配置 yum 阿里云镜像仓库
仓库来源:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11kLbub8
由于后面要使用 wget 拉取 yum 阿里云镜像仓库的配置文件到我们的 CentOS 系统上,所以先执行如下命令安装或检查是否安装 wget
-y
:表示安装过程中需要我们输入y
确认的内容全部同意确认,这样子安装过程中就无需输入y
确认
bash
yum install -y wget
将原先的 yum 自带的下载仓库配置文件进行备份
bash
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
使用 wget 拉取 yum 阿里云镜像仓库的配置文件到我们的 CentOS 系统上
bash
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
然后,我们再为 yum 配置一下 epel 仓库
阿里云镜像仓库为 CentOS 配置 EPEL 文档:https://developer.aliyun.com/mirror/epel?spm=a2c6h.13651102.0.0.3e221b11bGYwYW
EPEL的全称叫 Extra Packages for Enterprise Linux,Linux 的额外软件包。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。yum 找不到相应的软件包可以从 epel 上寻找下载安装。来源:https://blog.csdn.net/weixin_41831919/article/details/109035936
如果原先有 epel 仓库源配置文件,那么先进行备份
bash
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
获取阿里云 epel 镜像仓库源配置文件
bash
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
接下来,对原有的缓存进行清除
bash
yum clean all
然后让 yum 建立新的缓存
bash
yum makecache
最后,我们让 yum 将可以更新的软件包更新一下
bash
yum update -y
CentOS Stream 9 配置 yum 阿里云镜像仓库
参考转自:https://blog.csdn.net/weixin_54009596/article/details/130597895
先运行如下命令,对 /etc/yum.repos.d 目录中的 yum 自带的下载仓库配置文件进行备份
bash
cd /etc/yum.repos.d/
mkdir repo_bak
cp -r *.repo ./repo_bak/
修改 /etc/yum.repos.d/ 目录下的 centos.repo 和 centos-addons.repo 文件,在其中写入如下内容,为 CentOS Stream 9 的 yum 配置阿里云镜像仓库
这里为了更加方便向 centos.repo 和 centos-addons.repo 文件写入如下内容,可以使用 xftp 工具用记事本打开编辑
centos.repo:
bash
[baseos]
name=CentOS Stream $releasever - BaseOS
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/BaseOS/$basearch/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1
[baseos-debug]
name=CentOS Stream $releasever - BaseOS - Debug
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/BaseOS/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[baseos-source]
name=CentOS Stream $releasever - BaseOS - Source
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/BaseOS/source/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[appstream]
name=CentOS Stream $releasever - AppStream
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/AppStream/$basearch/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1
[appstream-debug]
name=CentOS Stream $releasever - AppStream - Debug
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/AppStream/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[appstream-source]
name=CentOS Stream $releasever - AppStream - Source
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/AppStream/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[crb]
name=CentOS Stream $releasever - CRB
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/CRB/$basearch/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0
[crb-debug]
name=CentOS Stream $releasever - CRB - Debug
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/CRB/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[crb-source]
name=CentOS Stream $releasever - CRB - Source
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/CRB/source/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
centos-addons.repo:
bash
[highavailability]
name=CentOS Stream $releasever - HighAvailability
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/HighAvailability/$basearch/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0
[highavailability-debug]
name=CentOS Stream $releasever - HighAvailability - Debug
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/HighAvailability/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[highavailability-source]
name=CentOS Stream $releasever - HighAvailability - Source
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/HighAvailability/source/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[nfv]
name=CentOS Stream $releasever - NFV
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/NFV/$basearch/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0
[nfv-debug]
name=CentOS Stream $releasever - NFV - Debug
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/NFV/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[nfv-source]
name=CentOS Stream $releasever - NFV - Source
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/NFV/source/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[rt]
name=CentOS Stream $releasever - RT
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/RT/$basearch/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0
[rt-debug]
name=CentOS Stream $releasever - RT - Debug
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/RT/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[rt-source]
name=CentOS Stream $releasever - RT - Source
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/RT/source/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[resilientstorage]
name=CentOS Stream $releasever - ResilientStorage
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/ResilientStorage/$basearch/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=0
[resilientstorage-debug]
name=CentOS Stream $releasever - ResilientStorage - Debug
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/ResilientStorage/$basearch/debug/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[resilientstorage-source]
name=CentOS Stream $releasever - ResilientStorage - Source
baseurl=http://mirrors.aliyun.com/centos-stream/$stream/ResilientStorage/source/tree/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
[extras-common]
name=CentOS Stream $releasever - Extras packages
baseurl=http://mirrors.aliyun.com/centos-stream/SIGs/$stream/extras/$basearch/extras-common/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1
[extras-common-source]
name=CentOS Stream $releasever - Extras packages - Source
baseurl=http://mirrors.aliyun.com/centos-stream/SIGs/$stream/extras/source/extras-common/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
enabled=0
接下来,对原有的缓存进行清除
bash
yum clean all
然后让 yum 建立新的缓存
bash
yum makecache
最后,我们让 yum 将可以更新的软件包更新一下
bash
yum update -y
至此,CentOS Stream 9 配置 yum 阿里云镜像仓库完成
yum 常用命令
yum 命令的用法:
bash
yum [命令选项] [要执行的命令] [软件包1 软件包2 ...]
yum 后面可以使用的命令选项:
-y
:在执行操作时自动回答 "yes",省去用户确认步骤。-q
:以静默模式执行命令,减少终端输出信息。-v
:以详细模式执行命令,增加终端输出信息。-h
或--help
:显示帮助信息,列出可用的选项和参数。-C
:在执行命令前检查软件包的完整性,可以帮助避免损坏的软件包。
yum 后面可以使用的要执行的命令:
install package1 [package2] [...]
安装指定的软件包remove package1 [package2] [...]
删除指定的软件包update [package1] [package2] [...]
更新软件包,没有指定软件包,则为可以更新的软件包进行更新makecache
让 yum 建立缓存list [...]
列出所有的与查找关键词匹配的已安装和可以安装的软件包yum list
列出所有的已安装和可以安装的软件包yum list installed
列出所有的已安装的软件包
info [...]
列出所有的与查找关键词匹配的已安装和可以安装的软件包及其信息yum info
列出所有的已安装和可以安装的软件包及其信息
search string1 [string2] [...]
根据关键词搜索软件包clean
清理 yum 缓存yum clean all
清理所有缓存yum clean metadata
清理元数据缓存yum clean packages
清理软件包缓存
repolist all|enabled|disabled
列出 yum 仓库列表- all:显示所有仓库,并显示仓库的状态(是否启用)
- enabled:显示启用的仓库
- disabled:显示禁用的仓库
Linux 中的软件包组,其实就是一个软件包集合,将多个经常一起使用的或者在一个环境下经常会用到的软件包组成一个集合,形成一个软件包组,选择软件包组,可以一次直接将一个环境下经常会使用的软件包安装到本地,就不用一个一个单独输入软件包名进行安装
groupinstall group1 [group2] [...]
安装软件包组groupupdate group1 [group2] [...]
更新软件包组groupremove group1 [group2] [...]
删除软件包组grouplist [...]
列出所有的与查找关键词匹配的软件包组groupinfo group1 [group2] [...]
列出软件包组及其信息