软件包和RPM

目标

  理解RPM软件包形式提供软件,并使用YUM和RPM调查系统上安装的软件包。

名词定义

  • 简介

  RPM软件包管理器最初是由红帽开发的,该程序提供了一种标准的方式来打包软件进行分发。与使用从存档T恤到文件系统的软件相比,采用RPM软件包形式管理软件要简单多。管理员可以通过它跟踪软件包所安装的文件,需要删除哪些软件并检查确保显示支持软件包。有关已安装软件包的信息存储在个系统的本地RPM数据库中。红帽为红帽企业Linux提供的所有软件都以RPM软件包的形式提供。

  RPM软件包文件由四个元素组成:name-version-release.architecture


RPM文件名元素

 

名称 描述
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: 20220116日 星期日 180158秒
Group       : System Environment/Base
Size        : 5827255
License     : GPLv2+
Signature   : RSA/SHA256, 20190823日 星期五 060155秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : yum-3.4.3-163.el7.centos.src.rpm
Build Date  : 20190808日 星期四 195756秒
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%]

文档更新时间: 2022-07-01 14:16   作者:xiubao yan