# 安装前脚本--检查依赖是否满足
rpm pre script
# 安装过程中脚本
rpm install script
# 安装结束后脚本
rpm post script
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
列出这个包的更改日志# 检入Changelog软件包,以查看哪些修复程序已向后移植
## -q 查询软件包
## -v 显示详情
## --changelog 列出这个包的更改日志
rpm -qv --changelog openssh-server | less
(若没有,则标准输出就为空)
# 查看软件包的文档所在的位置
rpm -qpd rpm包
(若没有,则标准输出就为空)
# 查看软件包的配置文件
#rpm -qpc rpm包
(若没有,则标准输出就为空)
# 查看软件包的依赖关系
rpm -qpR rpm包
## -i 安装软件包
## -v 显示过程详情
## -h 安装软件包时列出标记
rpm -ivh *.rpm
# 强制安装
## --force 强制安装
rpm -ivh --force *.rpm
场景: 已经离线下载好了所需要的rpm包,并放在统一目录
下,但是安装的时候提示依赖不满足.
# 忽略依赖安装所有rpm
## -i 安装软件包
## -v 显示过程详情
## -h 安装软件包时列出标记
## --nodeps 不验证软件包依赖
rpm -ivh *.rpm --nodeps
## -U 升级软件包
## -v 显示过程详情
## -h 安装软件包时列出标记
rpm -Uvh *.rpm
# 更新 xxx.rpm, 如不存在则不安装:
## -F 软件包存在则升级,不存在则不安装
rpm -Fuh xxx.rpm
# 加上--force会忽略依赖强制安装,--nodeps则可以忽略安装信息
## -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 软件名
# 查询命令(绝对路径)属于哪个包
## -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
# 列出所有已安装的软件包
## -q 查询软件包
## -a 查询所有的软件包
rpm -qa
# 从已安装的包中查询openssh
## -q 查询软件包
## -a 查询所有的软件包
## -qa 后加包名,等价于从查询结果中过滤包查询结果
rpm -qa openssh
## -q 查询软件包
## -l 显示软件包的文件列表
rpm -ql 包名
# 示例
rpm -ql openssh
# 查看已安装的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
-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.
常用参数:
-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包
## -V 验证
rpm -V 包名
# 查看命令行的包名
## -q 查询软件包
## -a 查询所有的软件包
rpm -qa systemd
## -V 验证
rpm -V $(rpm -qa systemd)
如果软件包异常
,会显示以下内容
:
# 对所有的rpm包进行包校验
for i in `rpm -qa`; do rpm -V $i; done
# 查看文件的依赖库
ldd $(which systemd)
# 查看缺失的依赖库文件
ldd $(which systemctl) |grep "not found"
# 更新文件索引数据库
updatedb
# 定位缺失的依赖库文件所在位置
locate libgcrypt.so.11
# cd到缺失到依赖库所在的目录
cd /etc/ld.so.conf.d/