YUM包管理器:
yum是一个C/S架构的程序包管理器。yum的配置文件,需要指定源的url。客户端会先将rpm下载到本地的缓存目录中。注意:yum支持两种类型文件系统服务武器,常用的:ftp和http。
注意:yum的元数据文件是通过rpm包的元数据抽取出来的。createrepo命令。不过使用createrepo命令很难创建出一些高级仓库,因为需要对程序包做分组。因为分组的配置是在xml格式的文件中定义的。需要人工手动维护。
YUM:yellow dog/yellowdog Update Modifer
注意:yum并不是redhat公司开发的。
yum repository:yum repo
注意:存储了众多的rpm包,以及包的相关的元数据文件(放置于特定的目录下:repodata)repodata所在的位置,是仓库所应该指定的路径。
注意:centos、redhat的安装工具是anaconda,他也会使用到yum工具。安装的时候,使用的仓库是光盘。
注意:yum会同时分析多个仓库,然后找一个最新的包安装到服务器上。
yum客户端
配置文件:
/etc/yum.conf:为所有仓库提供公共配置。
/etc/yum.repos.d/*.repo:为仓库的指向,提供配置信息。
示例:
[repositoryid] # 仓库的ID必须唯一。必须
name= # 仓库的名称,可以随意起。 必须
baseurl=url # 指定仓库的url路径。可以指定多个,默认使用第一个。必须
mirrorlist # 和baseurl二选一,不常用。
enabled=0/1 # 是否启用该仓库。默认启用。
gpgcheck=0/1 # 是否进行gpg校验。
gpgkey=URL # gpg的密钥文件。
enablegroups=0/1 # 是否启用组形式,批量管理程序包。
failovermethod= # 故障转移方法,当baseurl为多个的时候,有用,默认是roundrobin。{roundrobin|priority}
keepalive # 是否启用保持连接功能。
username/password # 部分服务器需要用户名和密码。
cost= # 开销,默认是1000。
yum命令
repolist
repolist:列出已经启用的仓库。[all|enabled|disabled]
repolist all:列出所有仓库。
list:显示程序包。
'@'前缀的表示已经安装的。
XX*:模糊匹配
available:列出仓库中有,但是尚未安装的包。
installed
updates
install:安装
示例:yum intall package1 [package2]
update:升级程序包
示例:yum update package1 [package2]
check-update:检查可用升级
upgrade:和update含义一样。
remove:卸载指定巡检包。
示例:yum remove|erase package1 [package2]
info:查看包的简要信息
示例:yum info package
provides:查看指定的特性是由哪个程序包提供的。
通常用来验证某个文件来自哪个包。
clean:清理本地的缓存。
clean [packages|metadata|expire-cache|rpmdb|plugins|all]
安装rpm包的时候,yum需要将元数据和包下载到本地。然后rpm包便会删除。元数据保留,删除的话需要手动执行命令。
makecache:构建缓存。
可以忽略该操作。
search:模糊搜索
示例:yum search ls
搜索包名、summary信息。
reinstall:重新安装
downgrade:降级
deplist:列出依赖信息
示例:yum deplist gcc
history:查看yum事务历史
list
stat
只有执行安装、卸载等操作的时候,才属于事务。
localinstall:安装本地程序包,建议使用install参数
localupdate:升级本地程序包,建议使用update参数
yum的具体使用:
一、列举包文件
列出资源库中所有可以安装或更新的rpm包
# yum list列出资源库中特定的可以安装或更新以及已经安装的rpm包
# yum list perl //列出名为perl 的包
# yum list perl* //列出perl 开头的包列出资源库中所有可以更新的rpm包
# yum list updates列出已经安装的所有的rpm包
# yum list installed列出已经安装的但是不包含在资源库中的rpm包
# yum list extras注:extras是repos.d中定义的资源列表名称
二、列举资源信息
列出资源库中所有可以安装或更新的rpm包的信息
# yum info列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息
# yum info perl //列出perl 包信息
# yum info perl* //列出perl 开头的所有包的信息
列出资源库中所有可以更新的rpm包的信息
# yum info updates
列出已经安装的所有的rpm包的信息
# yum info installed
列出已经安装的但是不包含在资源库中的rpm包的信息
# yum info extras
三、搜索
搜索匹配特定字符的rpm包
# yum search perl //在包名称、包描述等中搜索
搜索有包含特定文件名的rpm包
# yum provides realplay
四、管理包
安装rpm包
# yum install perl //安装perl 包
# yum install perl* //安装perl 开头的包
删除rpm包,包括与该包有倚赖性的包
# yum remove perl* //会删除perl-* 所有包
软件组管理
# yum groupinstall “Chinese Support” //安装指定的组
# yum groupupdate “Chinese Support” //安装了的组成员软件包更新
# yum grouplist “Chinese Support” //安装了的组和可以安装的组一览显示
# yum groupremove “Chinese Support” //删除指定的组
# yum groupinfo “Chinese Support” //指定组所包含的软件包显示
五、更新
检查可更新的rpm包
# yum check-update
更新所有的rpm包
# yum update
更新指定的rpm包,如更新kernel和kernel source
# yum update kernel kernel-source
大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级
# yum upgrade
六、清空缓存
清除暂存中rpm包文件
# yum clean packages
清除暂存中rpm头文件
# yum clearn headers
清除暂存中旧的rpm头文件
# yum clean oldheaders
清除暂存中旧的rpm头文件和包文件
# yum clearn all
rpm 常用命令
1.rpm简介
RPM 二进制包的命名需遵守统一的命名规则,用户通过名称就可以直接获取这类包的版本、适用平台等信息。
RPM 二进制包命名的一般格式如下:
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中:
httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的,在某些 Linux 命令中,有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)使用的是包名,一不小心就会弄错。
2.2.15:包的版本号,版本号的格式通常为主版本号.次版本号.修正号。
15:二进制包发布的次数,表示此 RPM 包是第几次编程生成的。
el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
centos:表示此包适用于 CentOS 系统。
i686:表示此包使用的硬件平台,目前的 RPM 包支持的平台如表 1 所示:
表 1 RPM 包适用的硬件平台
平台名称 适用平台信息
i386 386 以上的计算机都可以安装
i586 686 以上的计算机都可以安装
i686 奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,所以这个软件版本居多
x86_64 64 位 CPU 可以安装
noarch 没有硬件限制
rpm:RPM 包的扩展名,表明这是编译好的二进制包,可以使用 rpm 命令直接安装。此外,还有以 src.rpm 作为扩展名的 RPM 包,这表明是源代码包,需要安装生成源码,然后对其编译并生成 rpm 格式的包,最后才能使用 rpm 命令进行安装。
(01)安装一个包:# rpm -ivh
(02) 升级一个包:# rpm -Uvh
(03) 移走一个包:# rpm -e
(04) 安装参数:
--force 即使覆盖属于其它包的文件也强迫安装
--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
(05) 查询一个包是否被安装:# rpm -q < rpm package name>
(06) 得到被安装的包的信息:# rpm -qi < rpm package name>
(07) 列出该包中有哪些文件:# rpm -ql < rpm package name>
(08) 列出服务器上的一个文件属于哪一个RPM包:#rpm -qf
(09) 可综合好几个参数一起用:# rpm -qil < rpm package name>
(10) 列出所有被安装的rpm package:# rpm -qa
(11) 列出一个未被安装进系统的RPM包文件中包含有哪些文件:# rpm -qilp < rpm package name>
2. rpm参数详解
(1) 安装命令
命令格式:# rpm -i(or --install) [options] file1.rpm ... fileN.rpm
参数列表:file1.rpm ... fileN.rpm(将要安装的RPM包的文件名)
详细选项:
-h (或 --hash) 安装时输出hash记号 (``#'')
--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
通用选项:
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为“根目录”,这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
(2) 删除命令
命令格式:# rpm -e(or --erase) [options] pkg1 ... pkgN
参数列表:pkg1 ... pkgN (要删除的软件包)
详细选项:
--test 只执行删除的测试
--noscripts 不运行预安装和后安装脚本程序
--nodeps 不检查依赖性
通用选项:
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
(3) 升级命令
命令格式:# rpm -U(or --upgrade) [options] file1.rpm ... fileN.rpm
参数列表:file1.rpm ... fileN.rpm (软件包的名字)
详细选项:
-h (or --hash) 安装时输出hash记号 (``#'')
--oldpackage 允许"升级"到一个老版本
--test 只进行升级测试
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--percent 以百分比的形式输出安装的进度
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为
通用选项:
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
(4) 查询命令
命令格式:# rpm -q(or --query) [options]
参数列表:pkg1 ... pkgN (查询已安装的软件包)
详细选项:
-p (or ``-'') 查询软件包的文件
-f 查询属于哪个软件包
-a 查询所有安装的软件包
-g 查询属于组的软件包
--whatprovides 查询提供了 功能的软件包
--whatrequires 查询所有需要 功能的软件包
信息选项:
显示软件包的全部标识
-i 显示软件包的概要信息
-l 显示软件包中的文件列表
-c 显示配置文件列表
-d 显示文档文件列表
-s 显示软件包中文件列表并显示每个文件的状态
--scripts 显示安装、卸载、校验脚本
--queryformat (or --qf) 以用户指定的方式显示查询信息
--dump 显示每个文件的所有已校验信息
--provides 显示软件包提供的功能
--requires (or -R) 显示软件包所需的功能
通用选项:
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
(5) 校验已安装的软件包
命令格式: # rpm -V(or --verify, or -y) [options]
参数列表:pkg1 ... pkgN (将要校验的软件包名)
软件包选项:
-p 校验包文件
-f 校验所属的软件包
-a 校验所有的软件包
-g 校验所有属于组 的软件包
详细选项:
--noscripts 不运行校验脚本
--nodeps 不校验依赖性
--nofiles 不校验文件属性
通用选项:
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
(6) 校验软件包中的文件
语法:# rpm -K(or --checksig) [options] file1.rpm ... fileN.rpm
参数:file1.rpm ... fileN.rpm (软件包的文件名)
详细选项:
--nopgp 不校验PGP签名
通用选项:
-v 显示附加信息
-vv 显示调试信息
--rcfile 设置rpmrc文件为
(7) 其它参数选项
--rebuilddb 重建RPM资料库
--initdb 创建一个新的RPM资料库
--quiet 尽可能的减少输出
--help 显示帮助文件
--version 显示RPM的当前版本
Linux rpm查询软件包命令(-q、-qa、-i、-p、-l、-f、-R)
rpm 命令还可用来对 RPM 软件包做查询操作,具体包括:
查询软件包是否已安装;
查询系统中所有已安装的软件包;
查看软件包的详细信息;
查询软件包的文件列表;
查询某系统文件具体属于哪个 RPM 包。
使用 rpm 做查询命令的格式如下:
[root@CncLucZK ~]# rpm 选项 查询对象
rpm -q:查询软件包是否安装
用 rpm 查询软件包是否安装的命令格式为:
[root@CncLucZK ~]# rpm -q 包名 #-q 表示查询,是 query 的首字母。
注意这里使用的是包名,而不是包全名。因为已安装的软件包只需给出包名,系统就可以成功识别(使用包全名反而无法识别)。
rpm -qa:查询系统中所有安装的软件包
使用 rpm 查询 Linux 系统中所有已安装软件包的命令为:
[root@CncLucZK ~]# rpm -qa
[root@CncLucZK mnt]# rpm -qa
mtr-0.92-1.el8.x86_64
trousers-lib-0.3.14-2.el8.x86_64
geolite2-country-20180605-1.el8.noarch
。。。
此外,这里还可以使用管道符查找出需要的内容,相比rpm -q 包名命令,采用这种方式可以找到含有包名的所有软件包。比如:
[root@CncLucZK ~]# rpm -qa | grep httpd
httpd-devel-2.2.15-15.el6.centos.1.i686
httpd-tools-2.2.15-15.el6.centos.1.i686
...
rpm -qi:查询软件包的详细信息
通过 rpm 命令可以查询软件包的详细信息,命令格式如下:
[root@CncLucZK ~]# rpm -qi 包名 #-i 选项表示查询软件信息,是 information 的首字母。
想查看 apache 包的详细信息,可以使用如下命令:
[root@CncLucZK mnt]# rpm -qi httpd
Name : httpd
Version : 2.4.37
Release : 30.module_el8.3.0+561+97fdbbcc
Architecture: x86_64
Install Date: Fri 11 Dec 2020 04:19:47 PM CST
Group : System Environment/Daemons
Size : 5118331
License : ASL 2.0
Signature : RSA/SHA256, Wed 04 Nov 2020 12:00:44 PM CST, Key ID 05b555b38483c65d
Source RPM : httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.src.rpm
Build Date : Wed 04 Nov 2020 11:21:28 AM CST
Build Host : x86-02.mbox.centos.org
Relocations : (not relocatable)
Packager : CentOS Buildsys <bugs@centos.org>
Vendor : CentOS
URL : https://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
还可以查询未安装软件包的详细信息,命令格式为:
[root@CncLucZK ~]# rpm -qip 包全名 #-p 选项表示查询未安装的软件包,是 package 的首字母。
注意,这里用的是包全名,且未安装的软件包需使用“绝对路径+包全名”的方式才能确定包。
rpm -ql:命令查询软件包的文件列表
rpm 软件包通常采用默认路径安装,各安装文件会分门别类安放在适当的目录文件下。使用 rpm 命令可以查询到已安装软件包中包含的所有文件及各自安装路径,命令格式为:
[root@CncLucZK ~]# rpm -ql 包名
-l 选项表示列出软件包所有文件的安装目录。
例如,查看 apache 软件包中所有文件以及各自的安装位置,可使用如下命令:
[root@CncLucZK mnt]# rpm -ql httpd
/etc/httpd/conf
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
....
-同时,rpm 命令还可以查询未安装软件包中包含的所有文件以及打算安装的路径,命令格式如下:
[root@CncLucZK ~]# rpm -qlp 包全名 #-p 选项表示查询未安装的软件包信息,是 package 的首字母。
注意,由于软件包还未安装,因此需要使用“绝对路径+包全名”的方式才能确定包。
比如,我们想查看 bing 软件包(未安装,绝对路径为:/mnt/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm)中的所有文件及各自打算安装的位置,可以执行如下命令:
[root@CncLucZK ~]# rpm -qlp /mnt/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
rpm -qf:命令查询系统文件属于哪个RPM包
rpm -ql 命令是通过软件包查询所含文件的安装路径,rpm 还支持反向查询,即查询某系统文件所属哪个 RPM 软件包。其命令格式如下:
[root@CncLucZK ~]# rpm -qf 系统文件名 #-f 选项的含义是查询系统文件所属哪个软件包,是 file 的首字母。
注意,只有使用 RPM 包安装的文件才能使用该命令,手动方式建立的文件无法使用此命令。
例如,查询 ls 命令所属的软件包,可以执行如下命令:
[root@CncLucZK mnt]# rpm -qf /bin/ls
coreutils-8.30-6.el8.x86_64
rpm -qR:查询软件包的依赖关系
使用 rpm 命令安装 RPM 包,需考虑与其他 RPM 包的依赖关系。rpm -qR 命令就用来查询某已安装软件包依赖的其他包,该命令的格式为:
[root@CncLucZK ~]# rpm -qR 包名 #-R(大写)选项的含义是查询软件包的依赖性,是 requires 的首字母。
例如,查询 apache 软件包的依赖性,可执行以下命令:
[root@CncLucZK mnt]# rpm -qR httpd
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/etc/mime.types
config(httpd) = 2.4.37-30.module_el8.3.0+561+97fdbbcc
httpd-filesystem
httpd-filesystem = 2.4.37-30.module_el8.3.0+561+97fdbbcc
同样,在此命令的基础上增加 -p 选项,即可实现查找未安装软件包的依赖性。
例如,XXX软件包尚未安装(绝对路径为: /mnt/Packages/XXX-9.8.2-0.10.rc1.el6.i686.rpm),查看此软件包的依赖性可执行如下命令:
[root@CncLucZK ~]# rpm -qRp /mnt/Packages/XXX-9.8.2-0.10.rc1.el6.i686.rpm
/bin/bash
/bin/sh
XXX-libs = 32:9.8.2-0.10.rc1.el6
注意,这里使用的也是“绝对路径+包全名”的方式。
Linux RPM包验证和数字证书(数字签名)
执行 rpm -qa 命令可以看到,Linux 系统中装有大量的 RPM 包,且每个包都含有大量的安装文件。因此,为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题,Linux 提供了以下两种监控(检测)方式:
RPM 包校验:其实就是将已安装文件和 /var/lib/rpm/ 目录下的数据库内容进行比较,确定文件内容是否被修改。
RPM 包数字证书校验:用来校验 RPM 包本身是否被修改。
Linux RPM 包校验
RPM 包校验可用来判断已安装的软件包(或文件)是否被修改,此方式可使用的命令格式分为以下 3 种。
[root@CncLucZK ~]# rpm -Va #-Va 选项表示校验系统中已安装的所有软件包。
[root@CncLucZK ~]# rpm -V 已安装的包名 #-V 选项表示校验指定 RPM 包中的文件,是 verity 的首字母。
[root@CncLucZK ~]# rpm -Vf 系统文件名 #-Vf 选项表示校验某个系统文件是否被修改。
例如我们校验 apache 软件包中所有的安装文件是否被修改,可执行如下命令:
[root@CncLucZK -]# rpm -V httpd
可以看到,执行后无任何提示信息,表明所有用 apache 软件包安装的文件均未改动过,还和从原软件包安装的文件一样。
接下来尝试对 apache 的配置文件 /etc/httpd/conf/httpd.conf 做适当修改,修改格式如下:
[root@CncLucZK ~]#vim /etc/httpd/conf/httpd.conf
...省略部分内容...
Directorylndex index.html index.html.var index.php
#这句话是定义apache可以识别的默认网页文件名。在后面加入了index.php
#这句话大概有400行左右
…省略部分内容...
由于我们还未学习如何配置 apache,为防止其崩溃,这里仅尝试修改 apache 的默认网页文件。按照以上格式对文件进行修改后保存退出,再次使用 rpm -V 命令对 apache 软件包进行验证:
[root@CncLucZK ~]# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
可以看到,结果显示了文件被修改的信息。该信息可分为以下 3 部分:
最前面的 8 个字符(S.5…T)都属于验证信息,各字符的具体含义如下:
S:文件大小是否改变。
M:文件的类型或文件的权限(rwx)是否改变。
5:文件MD5校验和是否改变(可以看成文件内容是否改变)。
D:设备的主从代码是否改变。
L:文件路径是否改变。
U:文件的属主(所有者)是否改变。
G:文件的属组是否改变。
T:文件的修改时间是否改变。
.:若相关项没发生改变,用 . 表示。
被修改文件类型,大致可分为以下几类:
c:配置文件(configuration file)。
d:普通文档(documentation)。
g:ghost file,很少见,就是该文件不应该被这个 RPM 包包含。
l:授权文件(license file)。
r:描述文件(read me)。
被修改文件所在绝对路径(包含文件名)。
由此,S.5…T. c S.5…T. c /etc/httpd/conf/httpd.conf 表达的完整含义是:配置文件 httpd.conf 的大小、内容、修改时间被人为修改过。
注意,并非所有对文件做修改的行为都是恶意的。通常情况下,对配置文件做修改是正常的,比如说配置 apache 就要修改其配置文件,而如果验证信息提示对二进制文件做了修改,这就需要小心,除非是自己故意修改的。
Linux RPM数字证书验证
RPM 包校验方法只能用来校验已安装的 RPM 包及其安装文件,如果 RPM 包本身就被动过手脚,此方法将无法解决问题,需要使用 RPM 数字证书验证方法。
简单的理解,RPM 包校验其实就是将现有安装文件与最初使用 RPM 包安装时的初始文件进行对比,如果有改动则提示给用户,因此这种方式无法验证 RPM 包本身被修改的情况。
数字证书,又称数字签名,由软件开发商直接发布。Linux 系统安装数字证书后,若 RPM 包做了修改,此包携带的数字证书也会改变,将无法与系统成功匹配,软件无法安装。
可以将数字证书想象成自己的签名,是不能被模仿的(厂商的数字证书是唯一的),只有我认可的文件才会签名(只要是厂商发布的软件,都符合数字证书验证);如果我的文件被人修改了,那么我的签名就会变得不同(如果软件改变,数字证书就会改变,从而通不过验证。当然,现实中人的手工签名不会直接改变,所以数字证书比手工签名还要可靠)。
使用数字证书验证 RPM 包的方法具有如下 2 个特点:
必须找到原厂的公钥文件,然后才能进行安装。
安装 RPM 包会提取 RPM 包中的证书信息,然后和本机安装的原厂证书进行验证。如果验证通过,则允许安装;如果验证不通过,则不允许安装并发出警告。
数字证书默认会放到系统中`/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-8位置处,通过以下命令也可验证:
#系统中的数字证书位置
[root@CncLucZK /]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-8
-r--r--r-- 1 root root 1683 Dec 11 2020 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-8
安装数字证书的命令如下:
[root@CncLucZK ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
--import表示导入数字证书
数字证书安装完成后,可使用如下命令进行验证:
[root@CncLucZK ~]# rpm -qa|grep gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3
可以看到,数字证书已成功安装。在装有数字证书的系统上安装 RPM 包时,系统会自动验证包的数字证书,验证通过则可以安装,反之将无法安装(系统会报错)。
数字证书本身也是一个 RPM 包,因此可以用 rpm 命令查询数字证书的详细信息,也可以将其卸载。查询数字证书详细信息的命令如下:
[root@CncLucZK ~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
#查询数字证书包的详细信息
Name : gpg-pubkey
Relocations: (not relocatable)
Version : c105b9de Vendor: (none)
Architecture: (none)
Install Date: Tue 10 Dec 2019 11:21:09 AM CST
Group : Public Keys
Size : 0
License : pubkey
Signature : (none)
Source RPM : (none)
Build Date : Wed 05 Jun 2019 10:17:31 PM CST
Build Host : localhost
Relocations : (not relocatable)
…省略部分输出…
-----END PGP PUBLIC KEY BLOCK----
卸载数字证书可以使用 -e 选项,命令如下:
[root@CncLucZK ~]# rpm -e gpg-pubkey-c105b9de-4ead3a3
虽然数字证书可以手动卸载,但不推荐大家将其卸载。