已复制
全屏展示
复制代码

CentOS软件包管理工具之RPM


· 3 min read
虽然我们平时都使用 yum 来安装卸载软件,但 yum 也是使用 rpm 的,所以rpm的掌握也必不可少。

一. 安装方式

# 本地文件安装
rpm -ivh /path/yyy.rpm

# 远程下载安装
rpm -ivh ftp://ftp.xxx.com/yyy.rpm
rpm -ivh http://www.xxx.com/yyy.rpm

二. 安装步骤

rpm包安装一般会是如下步骤

  • 1、软件包依赖性检测。
  • 2、检查软件包冲突检测。
  • 3、执行安装前的脚本。
  • 4、处理配置文件(不会将原来的配置文件覆盖掉,会给源文件加上后缀.rpmorig)。
  • 5、复制程序的文件到相应目录,同时设置文件权限。
  • 6、执行安装后脚本程序。
  • 7、更新RPM数据库,更新校验和卸载等。

三. 选项总结

3.1 安装选项

-ivh software         # 安装常用选项(安装、显示详细信息、显示进度)

3.2 查询选项

-qa                   # 列出所有已安装的软件

-q software           # 查询该软件是否安装
-qi software          # 查询该软件的详细信息
-ql software          # 查询该软件产生了哪些目录和文件

-qf /path/filename           # 查询该文件或者目录由什么包产生的
-qpi /path/software.rpm     # 查询该软件包的详细信息
-qpl /path/software.rpm     # 查询该软件包安装后产生哪些目录和文件
-qp --scripts /path/software.rpm  # 查询该软件包安装前或卸载后要运行的脚本

3.3 卸载选项

-e software # 卸载该软件

3.4 升级选项

-Uvh software.rpm # 升级该软件

3.5 其他选项

--force    # 忽略软件包的冲突(强制安装、升级、卸载时可用)
--nodeps   # 安装、卸载、升级时不检查依赖关系

四. GPG签名

rpm在发布时通常都会发布RPM GPG公钥,目的是用来验证RPM包是不是RH官方签名的。即官方会提供一个RPM-GPG-KEY文件,比如grafana发布的gpg文件为:wget https://packages.grafana.com/gpg.key

  • 导入公钥
# 下载并导入
wget https://packages.grafana.com/gpg.key
mv gpg.key /etc/pki/rpm-gpg/RPM-GPG-KEY-grafana
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-grafana

# 或者直接网络导入
rpm --import https://packages.grafana.com/gpg.key
  • 验证签名
# 验证安装包签名是否正确
rpm -K ./grafana-7.0.6-1.x86_64.rpm
grafana-7.0.6-1.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

# 检测rpm安装包是否被修改过
rpm -Vp ./grafana-7.0.6-1.x86_64.rpm

# 检测rpm包生成的文件是否被修改过
rpm -Vf /etc/crontab

# 下面是输出提示解释
S :file Size differs
M :Mode differs (includes permissions and file type)
5 :MD5 sum differs
D :Device major/minor number mis-match
L :readLink(2) path mis-match
U :User ownership differs
G :Group ownership differs
T :mTime differs

五. 提取RPM包中的文件

当某一个配置文件或者命令不小心被删除或者修改,此时可从安装此软件的RPM包中提取出最原始文件。

# 1、确定该文件属于哪一个软件包
rpm -qf /usr/bin/rz
lrzsz-0.12.20-36.el7.x86_64

# 2、从iso中(或者其他途径)提取出该包
lrzsz-0.12.20-36.el7.x86_64.rpm

# 3、确定相对路径
rpm2cpio  ./lrzsz-0.12.20-36.el7.x86_64.rpm | cpio -t | grep /usr/bin/rz
364 blocks
./usr/bin/rz

# 4、提取配置文件
rpm2cpio ./lrzsz-0.12.20-36.el7.x86_64.rpm | cpio -idv  ./usr/bin/rz
./usr/bin/rz
364 blocks

# 5、拷贝文件到指定目录
sudo cp ./usr/bin/rz /usr/bin/rz
🔗

文章推荐