[命令] CentOS Linux & RHEL 命令 YUM (管理软件和软件源)

内容一: 帮助文档相关

1.1 显示 YUM 帮助信息

# yum help

1.2 显示 YUM 子选项的帮助信息

# yum help <option>

或者:

# yum <option> help

内容二:软件相关

2.1 安装软件

2.1.1 交互式
# yum install <software>
2.1.2 非交互式
# yum -y install <software>

或者:

# yum install <software> -y

2.2 删除软件

2.2.1 交互式
# yum remove <software>
2.2.2 非交互式
# yum -y remove <software>

或者:

# yum remove <software> -y

2.3 升级软件

2.3.1 升级软件
2.3.1.1 交互式
# yum update <software>
2.3.1.2 非交互式
# yum -y update <software>

或者:

# yum update <software> -y
2.3.2 升级所有软件
2.3.2.1 升级所有软件
2.3.2.1.1 交互式
# yum update
2.3.2.1.2 非交互式
# yum -y update

或者:

# yum update -y
2.3.2.2 升级除某软件外的所有软件
2.3.2.2.1 交互式
# yum update --exclude=<software>
2.3.2.2.2 非交互式
# yum -y update --exclude=<software>

或者:

# yum update --exclude=<software> -y
2.3.2.3 显示所有可以升级的软件
# yum check-update

2.4 显示软件

2.4.1 显示软件
2.4.1.1 显示软件
# yum list all | grep <software>
2.4.1.2 显示软件详细信息
# yum info | grep <software>
2.4.2 显示所有软件
# yum list all

内容三:软件组相关

3.1 安装软件组

3.1.1 交互式
# yum groupinstall <group>
3.1.2 非交互式
# yum -y groupinstall <group>

或者:

# yum groupinstall <group> -y

3.2 删除软件组

3.2.1 交互式
# yum groupremove <group>
3.2.2 非交互式
# yum -y groupremove <group>

或者:

# yum groupremove <group> -y

3.3 显示所有可用软件组

# yum group list

内容四:安全相关

4.1 Errata

4.1.1 Errata
4.1.1.1 安装 Errata
4.1.1.1.1 交互式
# yum update --advisory=<errata>
4.1.1.1.2 非交互式
# yum -y update --advisory=<errata>

或者:

# yum update --advisory=<errata> -y
4.1.1.2 显示 Errata 的详细信息
# yum updateinfo <errata>
4.1.2 所有 Errata
4.1.2.1 安装所有 Errata
4.1.2.1.1 交互式
# yum update-minimal --security
4.1.2.1.2 非交互式
# yum -y update-minimal --security

或者:

# yum update-minimal --security -y
4.1.2.2 显示所有 Errata 和相关软件版本
# yum updateinfo list
4.1.2.3 显示所有 Errata 和相关的 CVE
# yum updateinfo info security

4.2 CVE

4.2.1 CVE
4.2.1.1 安装 CVE
4.2.1.1.1 交互式
# yum update --cve <CVE>
4.2.1.1.2 非交互式
# yum -y update --cve <CVE>

或者:

# yum update --cve <CVE> -y
4.2.2 所有 CVE
4.2.2.1 显示所有 CVE 和相关软件版本
# yum updateinfo list cves
4.2.2.2 显示所有 CVE 和相关的 Errata
# yum updateinfo info security

4.2 安全补丁

4.2.1 安全补丁
4.2.1.1 安装安全补丁
4.2.1.1.1 交互式
# yum update <security patch>
4.2.1.1.2 非交互式
# yum -y update <security patch>

或者:

# yum update <security patch> -y
4.2.2 所有安全补丁
4.2.2.1 安装所有安全补丁
4.2.2.1.1 交互式
# yum update --security
4.2.2.1.2 非交互式
# yum -y update --security

或者:

# yum update --security -y
4.2.2.2 显示所有安全补丁
# yum check-update --security

内容五:软件源相关

5.1 显示所有软件源

# yum repolist 

5.2 缓存软件源列表

5.2.1 缓存所有已启用软件源列表
# yum repolist 
5.2.2 清除所有软件源列表缓存
# yum clean all
5.2.3 保存所有软件源列表缓存
# yum makecache

内容六:软件模块相关 (切换软件可用的版本)

6.1 软件模块相关的格式

6.1.1 显示所有软件模块
# yum module list
6.1.2 重置软件模块
# yum module reset <module>
6.1.3 设置软件模块
# yum module enable <module>:<versione>

6.2 切换软件模块的案例

6.2.1 检测当前软件兼容情况
# yum distro-sync

(注意:需要确保这条命令执行有以后没有报错)

6.2.2 显示所有软件模块
# yum module list | grep podman
container-tools      rhel8 [d]       common [d]                               Most recent (rolling) versions of podman, buildah, skopeo, runc, conmon, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and updated as frequently as every 12 weeks.
container-tools      1.0             common [d]                               Stable versions of podman 1.0, buildah 1.5, skopeo 0.1, runc, conmon, CRIU, Udica, etc as well as dependencies such as container-selinux built and tested together, and supported for 24 months.                                 
container-tools      2.0             common [d]                               Stable versions of podman 1.6, buildah 1.11, skopeo 0.1, runc, conmon, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.    
container-tools      3.0             common [d]                               Stable versions of podman 3.0, buildah 1.19, skopeo 1.2, runc, conmon, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.    
container-tools      4.0             common [d]                               Stable versions of podman 4.0, buildah 1.24, skopeo 1.6, runc, conmon, etc as well as dependencies such as container-selinux built and tested together, and supported as documented on the Application Stream lifecycle page.  

(补充:这里以显示所有和 podman 软件相关的软件模块为例)

6.2.3 设置软件模块
6.2.3.1 重置软件模块
# yum module reset container-tools

(补充:这里以重置 container-tools 软件模块为例)

6.2.3.2 设置软件模块
# yum module enable container-tools:3.0

(补充:这里以设置 container-tools 软件模块版本号为 3.0 为例)

6.2.3.3 显示设置 container-tools 软件模块版本号为 3.0 时 podman 软件的可用版本
# yum list all | egrep ^podman\.x         
podman.x86_64                                           3.0.1-9.module+el8.6.0+14874+64436299                       rhel-8-for-x86_64-appstream-rpms    

(补充:可以看到此时 podman 软件的可用版本是 3.0.1-9)

6.2.4 重置软件模块
6.2.4.1 重置软件模块
# yum module reset container-tools

(补充:这里以重置 container-tools 软件模块为例)

6.2.4.2 显示 container-tools 软件模块没有设置时 podman 软件的可用版本
# yum list all | egrep ^podman\.x
podman.x86_64                                           2:4.0.2-6.module+el8.6.0+14877+f643d2d6                     rhel-8-for-x86_64-appstream-rpms

(补充:可以看到此时 podman 软件的可用版本是 2:4.0.2-6)

内容七:管理相关

7.1 显示 YUM 历史命令

# yum history

7.2 显示 YUM 安装记录

# yum history info

[命令] Linux 命令 {} (设置字符串默认值、截取字符串、替换字符串里的内容)

内容一:设置字符串默认值

1.1 当要替换的变量未定义或为空时则给予其 1 个默认值

# value=
# newvalue=${value:-eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:-eternalcenter}
# echo $newvalue
mingyuzhu

或者:

# value=
# newvalue=${value:=eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:=eternalcenter}
# echo $newvalue
mingyuzhu

(补充:这里以当变量 value 存在且为空时则变量 newvalue 的值为 eternalcenter 为例)

1.2 当要替换的变量已定义且不为空时则给予其 1 个默认值

# value=
# newvalue=${value:+eternalcenter}
# echo $newvalue
# value=mingyuzhu
# newvalue=${value:+eternalcenter}
# echo $newvalue
eternalcenter

(补充:这里以当变量 value 存在且不为空时则变量 newvalue 的值为 eternalcenter 为例)

内容二:截取变量某一部分内容 (以字符在字符串的位置作为参照)

2.1 截取从第某个位置字符开始的所有内容

2.1.1 截取字符串中从左数第某个字符开始到左边的所有内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str::2}
et

或者:

# str=eternalcenter.com
# echo ${str:0:2}
et

或者:

# str=eternalcenter.com
# echo ${str:offset:2}
et

(补充:这里以截取字符串中从左数第 2 个字符和左边的所有内容为例)

2.1.2 截取字符串中从右数第某个字符开始到左边的所有内容 (不包含此字符本身)
# str=eternalcenter.com
echo ${str::0-2}
eternalcenter.c

(补充:这里以截取字符串中从右数第 2 个字符开始左边的所有内容为例)

2.1.3 截取字符串中从右数第某个字符开始到右边的所有内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str:0-2}
om

(补充: 截取字符串中从除右数第 2 个字符开始到右边的所有内容)

2.2 截取从第某个位置字符开始几个位置的字符的内容

2.2.1 截取字符串中从左数第某个字符开始几个字符的内容 (不包含此字符本身)
# str=eternalcenter.com
# echo ${str:5:4}
alce

(补充:这里以截取字符串中从左数第 5 个字符开始 4 个字符的内容为例)

(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)

2.2.2 截取字符串中从右数第某个字符开始几个字符的内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str:0-5:4}
r.co

(补充:这里以截取字符串中从右数第 5 个字符开始右边 4 个字符的内容为例)

(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)

2.3 截取从第某个位置字符到第某个位置字符的内容

2.3.1 截取字符串中从左数第某个字符到从右数第某个字符中的所有内容 (不包含这些字符本身)
# str=eternalcenter.com
# echo ${str:1:-4}
ternalcenter

(补充:这里以截取字符串中从左数第 1 个字符到右数第 4 个字符中的所有内容为例)

(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)

2.3.2 截取字符串中从右数第某个字符到从右数第某个字符中的所有内容 (不包含这些字符本身)
# str=eternalcenter.com
# echo ${str:0-5:0-1}
r.co

或者:

# str=eternalcenter.com
# echo ${str:0-5:-1}
r.co

(补充:这里以截取字符串中从右数第 1 个字符到从右数第 4 个字符中的所有内容为例)

(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)

2.4 截取字符串中除从左数第某个字符外的所有内容

# str=eternalcenter.com
# echo ${str:2}
ernalcenter.com

(补充:截取字符串中从除左数第 2 个字符开始到右边的所有内容)

内容三:截取变量某一部分内容 (以字符作为参照)

3.1 截取变量前一部分内容 (去尾)

3.1.1 截取变量右数第 1 个某个字符到左边的所有内容 (去尾) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value%:*}
# echo $newvalue
ming:yu

(补充:这里以截取变量 value 右数第 1 个冒号 “:” 左边的所有值并赋予给变量 newvalue 为例)

3.1.2 截取变量右数最后某个字符到左边的所有内容 (最大限度去尾) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value%%:*}
# echo $newvalue
ming

(补充:这里以截取变量 value 右数最后 1 个冒号 “:” 左边的所有并赋予给变量 newvalue 内容为例)

3.1.3 截取变量右数最后某几个字符到左边的所有内容 (使用变量) (去尾) (不包含此字符本身)
# value=mingyuzhu
# novalue=zhu
# newvalue=${value%%$novalue}
# echo $newvalue
mingyu

(补充:这里以截取变量 value 右数最后 1 个 zhu 左边的所有内容并赋予给变量 newvalue 为例)

3.2 截取变量后一部分内容 (掐头)

3.1 截取变量左数第 1 个某个字符到右边的所有内容 (掐头) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value#*:}
# echo $newvalue
yu:zhu

(补充:这里以截取变量 value 左数第 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)

3.2 截取变量左数最后某个字符到右边的所有内容 (最大限度掐头) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value##*:}
# echo $newvalue
zhu

(补充:这里以截取变量 value 左数最后 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)

3.3 去除变量左数最后某个字符到右边的所有内容 (使用变量) (掐头) (不包含此字符本身)
# value=mingyuzhu
# novalue=ming
# newvalue=${value##$novalue}
# echo $newvalue
yuzhu

(补充:这里以截取变量 value 左数最后 1 个 ming 右边的所有内容并赋予给变量 newvalue 为例)

内容四:当变量已定义且不为空时则将变量中的某部分替换成另一部分

# value=mingyuzhu
# noneedvalue=yu
# needvalue=zhu
# newvalue=${value/$noneedvalue/$needvalue}
# echo $newvalue
mingzhuzhu

(补充:这里以将变量 value 中的 yu 替换成 zhu 并赋予给变量 newvalue 为例)