zl程序教程

您现在的位置是:首页 >  其它

当前栏目

rpm包管理器常见用法

用法 常见 管理器 RPM
2023-09-14 09:15:54 时间

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 -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包进行包校验
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/

查看rpm包的修复记录

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

在这里插入图片描述