rpm包管理器常见用法

下载rpm离线包


yumdownloader从公网下载rpm包

参考: https://cloud.tencent.com/developer/article/1614031

离线下载RPM

# 查看参数
yumdownloader --help

# 下载指定包
## --downloadonly  :仅下载而不更新
## --downloaddir   :指定一个其他文件夹用于保存软件包
yumdownloader --downloadonly --destdir=./yum-name/Packages/ telnet unzip libaio pcre-devel openssl openssl-devel

# 下载全量依赖包
## --downloadonly  :仅下载而不更新
## --resolve  解决依赖关系并下载所需的包
## --destdir  指定下载到目标目录(默认当前目录)
yumdownloader --resolve --destdir=./yum-name/Packages/ mysqldump

使用repotrack下载离线rpm包

repotrack能下载依赖包的依赖包.

# repotrack是yum-utils中的工具
yum -y install yum-utils

# 下载ansible的离线rpm包
repotrack ansible

repotrackyumdownloader的区别:

  • yumdownloader解决了ansible的依赖包,但是无法解决依赖包的依赖包;
  • repotrack不仅解决了ansible的依赖包,还解决了依赖包和依赖包之间的关系;

rpm包安装过程

# 安装前脚本--检查依赖是否满足
rpm pre script
# 安装过程中脚本
rpm install script
# 安装结束后脚本
rpm post script

rpm命令常用参数

https://www.linuxcool.com/rpm
https://wangchujiang.com/linux-command/c/rpm.html

  • -i 安装软件包
  • -U 升级软件包
  • -F 软件包存在则升级,不存在则不安装
  • -v 显示过程详情
  • -h 安装软件包时列出标记
  • -e 卸载软件包
  • -q 查询软件包
    • -l 显示软件包的文件列表
  • -f 查询文件或命令属于哪个软件包
  • -a 查询所有的软件包
  • -p 查询指定的rpm软件包
  • --nodeps 不验证软件包依赖
  • --changelog 列出这个包的更改日志

查看rpm包的信息


查看rpm包的更新日志–changelog

常用于查看软件包的bug修复记录

# 检入Changelog软件包,以查看哪些修复程序已向后移植
## -q 查询软件包
## -v 显示详情
## --changelog 列出这个包的更改日志
rpm -qv --changelog openssh-server | less

## 查看CVE漏洞修复记录
rpm -qv --changelog openssh-server | grep CVE

在这里插入图片描述


查看软件包的文档所在的位置

(若没有,则标准输出就为空)

# 查看软件包的文档所在的位置
rpm -qpd rpm包

查看软件包的配置文件

(若没有,则标准输出就为空)

# 查看软件包的配置文件
#rpm -qpc rpm包

查看软件包的依赖关系

(若没有,则标准输出就为空)

# 查看软件包的依赖关系
rpm -qpR rpm包

安装包rpm -ivh

## -i 安装软件包
## -v 显示过程详情
## -h 安装软件包时列出标记
rpm -ivh *.rpm

# 强制安装
## --force 强制安装
rpm -ivh  --force *.rpm

离线安装相互依赖的rpm

场景: 已经离线下载好了所需要的rpm包,并放在统一目录下,但是安装的时候提示依赖不满足.

# 忽略依赖安装所有rpm
## -i 安装软件包
## -v 显示过程详情
## -h 安装软件包时列出标记
## --nodeps 不验证软件包依赖
rpm -ivh *.rpm --nodeps

更新包rpm -Uvh

## -U 升级软件包
## -v 显示过程详情
## -h 安装软件包时列出标记
rpm -Uvh *.rpm

# 更新 xxx.rpm, 如不存在则不安装:
## -F 软件包存在则升级,不存在则不安装
rpm -Fuh xxx.rpm
# 加上--force会忽略依赖强制安装,--nodeps则可以忽略安装信息

卸载包rpm -evh

## -e 卸载软件包
## -v 显示过程详情
## -h 安装软件包时列出标记
rpm -evh 包名
[rhel8 root ~]# rpm -evh net-tools
准备中...                          ################################# [100%]
正在清理/删除...
   1:net-tools-2.0-0.52.20160912git.el################################# [100%]

卸载软件但不卸载依赖包

# 只卸载指定的包
## -e 卸载软件包
## --nodeps 不检查依赖
rpm -e --nodeps 软件名

查询包


查询文件属于哪个包rpm -qf(最常用)

# 查询命令(绝对路径)属于哪个包
## -q 查询软件包
## -f 查询文件或命令属于哪个软件包
[root@c8 ~]# rpm -qf /bin/dnf
dnf-4.4.2-11.el8.noarch

# 查询文件属于哪个包
## -q 查询软件包
## -f 查询文件或命令属于哪个软件包
[root@c8 ~]# rpm -qf /etc/my.cnf
mysql-community-server-5.7.35-1.el7.x86_64

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

# 列出所有已安装的软件包
## -q 查询软件包
## -a 查询所有的软件包
rpm -qa

在这里插入图片描述

# 从已安装的包中查询openssh
## -q 查询软件包
## -a 查询所有的软件包
## -qa 后加包名,等价于从查询结果中过滤包查询结果
rpm -qa openssh

在这里插入图片描述


查看已安装的rpm包安装目录rpm -ql

## -q 查询软件包
## -l 显示软件包的文件列表
rpm -ql 包名

# 示例
rpm -ql openssh

在这里插入图片描述


查询已安装的rpm包安装目录rpm -qpl

# 查看已安装的rpm包安装目录
## -q 查询软件包
## -p 查询指定的rpm软件包
## -l 显示软件包的文件列表
rpm -qpl 包全名
[rhel8 root /mnt/cdrom/BaseOS/Packages]# rpm -qpl samba-4.13.3-3.el8.x86_64.rpm
警告:samba-4.13.3-3.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
/etc/openldap/schema
/etc/openldap/schema/samba.schema
/etc/pam.d/samba
/usr/bin/smbstatus
/usr/lib/.build-id
/usr/lib/.build-id/03

# 综合用法,查询软件的安装目录
## 例如查询firewalld的安装目录
### 查看firewalld程序的包名
[rhel8 root /usr/lib/firewalld/services]# rpm -qa firewalld
firewalld-0.8.2-6.el8.noarch
### 通过包名查询firewalld的安装目录
[rhel8 root /usr/lib/firewalld/services]# rpm -ql firewalld
/etc/firewalld
/etc/firewalld/firewalld.conf

查询包名的详细安装信息rpm -qi

-qi查询软件包的详细信息(information)

# 查看openssh的安装信息
## -q 查询软件包
## -i 与q同用表示--info 显示软件包信息
## -qi 显示套件的相关信息
rpm -qi openssh

在这里插入图片描述

# 查看未安装的rpm包samba-4.13.3-3.el8.x86_64.rpm的详细信息
## -qi 显示套件的相关信息
## -p 查询指定的rpm软件包

rpm -qip 包全名.rpm
[rhel8 root /mnt/cdrom/BaseOS/Packages]# rpm -qpi samba-4.13.3-3.el8.x86_64.rpm
警告:samba-4.13.3-3.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Name        : samba
Epoch       : 0
Version     : 4.13.3
Release     : 3.el8
Architecture: x86_64
Install Date: (not installed)
Group       : Unspecified
Size        : 2658583
License     : GPLv3+ and LGPLv3+
Signature   : RSA/SHA256, 2021年02月09日 星期二 08时52分49秒, Key ID 199e2f91fd431d51
Source RPM  : samba-4.13.3-3.el8.src.rpm
Build Date  : 2021年02月04日 星期四 12时01分32秒
Build Host  : x86-037.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : https://www.samba.org
Summary     : Server and Client software to interoperate with Windows machines
Description :
Samba is the standard Windows interoperability suite of programs for Linux and
Unix.

package-cleanup命令------清理本地安装的RPM软件包

常用参数:

-c使用备用配置文件(默认为/etc/yum.conf)
-y同意任何要求
–leaves列出与其他RPM没有依赖关系的软件包
–orphans列出当前软件仓库中不再提供支持的本地已安装的软件包
–oldkernels删除旧内核文件(kernel, kernel-devel)
–problems列出有依赖问题的软件包
–dupes扫描重复安装的RPM软件包
–cleandupes扫描重复安装的软件包,并删除老版本的软件包
# 依赖yum-utils
yum install -y yum-utils

# 列出重复的rpm包 
package-cleanup --dupes

# 去除重复的rpm包
package-cleanup –cleandupes 

校验rpm包是否被篡改

# 校验rpm包
## -V 验证
rpm -V 包名

# 查看命令行的包名
## -q 查询软件包
## -a 查询所有的软件包
rpm -qa systemd

## -V 验证
rpm -V $(rpm -qa systemd)

image.png

如果软件包异常,会显示以下内容
image.png


对所有的rpm包进行包校验rpm -V

# 对所有的rpm包进行包校验
for i in `rpm -qa`; do rpm -V $i; done

image.png


查看命令行缺失的文件

# 查看文件的依赖库
ldd $(which systemd)

image.png

# 查看缺失的依赖库文件
ldd $(which systemctl) |grep "not found"

image.png

# 更新文件索引数据库
updatedb

# 定位缺失的依赖库文件所在位置
locate libgcrypt.so.11

# cd到缺失到依赖库所在的目录
cd /etc/ld.so.conf.d/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值