软件包和RPM
目标
理解RPM软件包形式提供软件,并使用YUM和RPM调查系统上安装的软件包。
名词定义
- 简介
RPM软件包管理器最初是由红帽开发的,该程序提供了一种标准的方式来打包软件进行分发。与使用从存档T恤到文件系统的软件相比,采用RPM软件包形式管理软件要简单多。管理员可以通过它跟踪软件包所安装的文件,需要删除哪些软件并检查确保显示支持软件包。有关已安装软件包的信息存储在个系统的本地RPM数据库中。红帽为红帽企业Linux提供的所有软件都以RPM软件包的形式提供。
RPM软件包文件由四个元素组成:name-version-release.architecture
| 名称 | 描述 |
|---|---|
| name | 软件包名称 |
| version | 软件版本 |
| release | 基于系统的某版本进行打包发行 |
| acrh | 编译软件包运行的处理器架构。noarch表示此软件的内容不限定架构。x86为32位系统,x64为64位系统。 |
软件包提供商使用GPG密钥对RPM软件包进行数字签名。RPM系统通过确认软件包由相应的GPG密钥签名来验证软件包的完整性。如果GPG签名不匹配,RPM系统拒接安装软件包。
- 通过RPM软件包更新软件
红帽生成一个完整的RPM软件包来更新软件。管理员安装该软件包时,仅获取该软件包的最新版本。红帽不要求先安装旧软件包,再打补丁。为了更新软件包,RPM会删除旧版本的软件包,再安装新版本。更新通常会保留配置文件,但新版本的打包程序会定义确切的行为。
一般情况下,一次仅可安装软件包的一个版本或发行版。如果软件包构建没有冲突的文件名,则可以安装多个版本。最重要的相关例子是kernel软件包。由于新的内核只有通过启动至该内核才能进行调试,该软件包进行了特殊设计,以便一次可以安装多个版本。如果内核启动失败,旧内核依然可用并启动。
-检查RPM软件包
rpm实用程序是低级工具,可获取软件包文件和已安装软件包的相关内容。默认情况下,从已安装的软件包的本地数据库中获取信息。但是可以实用-p选项来指定您想获取有关已下载软件包的文件信息。
实操演示
命令:rpm
语法:rpm 选项 参数
rpm -qa vsdftpd
**-i:表示安装。
-v, -vv, -vvv:表示详细信息。
-h:以”#”号显示安装进度。
-q:查询指定包名。
-e:卸载指定包名。
-U:升级软件,若未软件尚未安装,则安装软件。
-F:升级软件。
-V:对RPM包进行验证。
–nodeps:忽略依赖关系。
–query:查询指定包名。同-q选项。
–hash:同-h。
–install:表示安装,同-i选项。
–test:仅作测试,不真正执行,可用于测试安装,测试卸载。
–replacepkgs:重新安装。替换原有的安装。
–force:忽略软件包及文件的冲突。
–initdb:新建RPM的数据库。
–rebuilddb:重建RPM的数据库。
–percent:以百分比的形式输出安装的进度。
- RPM包的查询:
rpm -q:查询某一个RPM包是否已安装
rpm -qi:查询某一个RPM包的详细信息
rpm -ql:列出某RPM包中所包含的文件。
rpm -qf:查询某文件是哪个RPM包生成的。
rpm -qa:列出当前系统所有已安装的包
##查询软件包
[root@sinfotek ~]# rpm -q vsftp
未安装软件包 vsftp
##查询软件包
[root@sinfotek ~]# rpm -q yum
yum-3.4.3-163.el7.centos.noarch
##查询指定安装包
[root@sinfotek src]# rpm -q -p cowsay-3.04-4.el7.src.rpm
警告:cowsay-3.04-4.el7.src.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
cowsay-3.04-4.el7.noarch
##查询软件安装信息
[root@sinfotek src]# rpm -qi yum
Name : yum
Version : 3.4.3
Release : 163.el7.centos
Architecture: noarch
Install Date: 2022年01月16日 星期日 18时01分58秒
Group : System Environment/Base
Size : 5827255
License : GPLv2+
Signature : RSA/SHA256, 2019年08月23日 星期五 06时01分55秒, Key ID 24c6a8a7f4a80eb5
Source RPM : yum-3.4.3-163.el7.centos.src.rpm
Build Date : 2019年08月08日 星期四 19时57分56秒
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://yum.baseurl.org/
Summary : RPM package installer/updater/manager
Description :
Yum is a utility that can check for and automatically download and
install updated RPM packages. Dependencies are obtained and downloaded
automatically, prompting the user for permission as necessary.
##查询软件的脚本
[root@sinfotek src]# rpm -qp haproxy-1.5.18-9.el7_9.1.x86_64.rpm --scripts
preinstall scriptlet (using /bin/sh):
getent group haproxy >/dev/null || groupadd -f -g 188 -r haproxy
if ! getent passwd haproxy >/dev/null ; then
if ! getent passwd 188 >/dev/null ; then
useradd -r -u 188 -g haproxy -d /var/lib/haproxy -s /sbin/nologin -c "haproxy" haproxy
else
useradd -r -g haproxy -d /var/lib/haproxy -s /sbin/nologin -c "haproxy" haproxy
fi
fi
postinstall scriptlet (using /bin/sh):
if [ $1 -eq 1 ] ; then
# Initial installation
systemctl preset haproxy.service >/dev/null 2>&1 || :
fi
preuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ] ; then
# Package removal, not upgrade
systemctl --no-reload disable haproxy.service > /dev/null 2>&1 || :
systemctl stop haproxy.service > /dev/null 2>&1 || :
fi
postuninstall scriptlet (using /bin/sh):
systemctl daemon-reload >/dev/null 2>&1 || :
if [ $1 -ge 1 ] ; then
# Package upgrade, not uninstall
systemctl try-restart haproxy.service >/dev/null 2>&1 || :
fi
##查询文件是由那个软件包生成的
[root@sinfotek src]# rpm -qf /bin/cat
coreutils-8.22-24.el7.x86_64
##安装软件包
[root@sinfotek src]# rpm -ivh haproxy-1.5.18-9.el7_9.1.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:haproxy-1.5.18-9.el7_9.1 ################################# [100%]