Linux rpm软件包管理

1.RPM基本概述

1.什么是rpm?

RPM全称 RPM package Manager 缩写,由红帽开发用于软件包的安装、升级、卸载、与查询。

2.rpm软件包的组成部分有哪些?

bash-doc-4.2.46-34.el7.x86_64.rpm

bash-doc:包名称
4.2.46:版本号
-34:发布次数
el7:表示软件包可以在 Red Hat 7.x,CentOS 7.x,CloudLinux 7.x 进行安装
.x86_64:硬件平台https://blog.csdn.net/sunny_day_day/article/details/108714946
.rpm:扩展名

3.如何获取rpm软件包? 本地获取? 联网获取?

学习了解前可以先使用本地系统镜像自带的rpm包,但生产环境中都是通过联网方式获取的rpm包。

ps:除了rpm安装软件以外是否还有其他方式安装软件?

分类 安装 版本
rpm包 预先编译打包,安装简单 软件版本偏低
源码包 手动编译打包,安装繁琐 软件版本随意
二进制包 解压即可使用, 安装简单 不能修改源码

2.RPM的使用

rpm软件安装、解决依赖、升级、卸载、查询等操作?

1.如何使用rpm工具安装rpm软件包?

选项 描述
-i 安装rpm
-v 显示安装详细信息
-h 显示安装rpm进度
--force 强制重新安装
--nodeps 忽略依赖关系

1.安装本地路径下软件包

# mount /dev/cdrom /mnt
# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

2.安装互联网上的rpm包(没有依赖)

# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

3.安装软件包,有依赖关系 ( 很麻烦 )

rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm

​ rpm安装A软件,如果该软件依赖了B软件,必须先安装B,才能安装A软件

​ 选择使用yum来安装( 自动处理依赖关系 )

yum仅仅负责安装软件。至于后续查询软件安装在哪,或者软件安装与否 ,都可以使用rpm命令来实现。

2.升级 rpm包如何升级

选项 描述
rpm -U 如果老版本不存在则全新安装,如果存在有新版即升级

安装 zabbix-agent3.0 升级 zabbix-agent4.0 rpm -Uvh xx.rpm

1.确认软件包zabbix-agent3.0安装了没有
#rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

# rpm -qa zabbix-agent
zabbix-agent-3.0.0-1.el7.x86_64


2.希望升级到zabbix-agent4.0,首先要找到zabbix-agent4.0的包,然后进行升级
# wget https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm

# rpm -Uvh zabbix-agent-4.0.0-2.el7.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...
1:zabbix-agent-4.0.0-2.el7         ################################# [ 50%]
正在清理/删除...
2:zabbix-agent-3.0.0-1.el7         ################################# [100%]


3.检查升级后的版本
# rpm -qa zabbix-agent
zabbix-agent-4.0.0-2.el7.x86_64

3.如何卸载rpm包?

# rpm -e zabbix-agent		#卸载软件(清理对应的文件)

# rpm -qa zabbix-agent		#检查是否已卸载

4.安装软件包后,如果查询安装到本地哪个路径?

选项 描述
rpm -q 查看指定软件包是否安装
rpm -qa 查看系统中已安装的所有RPM软件包列表
rpm -qi 查看指定软件的详细信息
rpm -ql 查询指定软件包所安装的目录、文件列表
rpm -qc 查询指定软件包的配置文件
rpm -qf 查询文件或目录属于哪个RPM软件
rpm -qip 查询未安装的rpm包详细信息
rpm -qlp 查询未安装的软件包会产生哪些文件

rpm -q 查看指定软件包是否安装

# rpm -q zabbix-agent
zabbix-agent-4.0.0-2.el7.x86_64

rpm -qa 查看系统中已安装的所有RPM软件包列表

# rpm -qa zabbix-agent
zabbix-agent-4.0.0-2.el7.x86_64

查多个包(不太记得包名时)
[root@oldboy ~]# rpm -qa | grep -E "zabbix-agent|bash"
bash-completion-2.1-6.el7.noarch
zabbix-agent-4.0.0-2.el7.x86_64
bash-4.2.46-30.el7.x86_64

rpm -qi 查看指定软件的详细信息 ( 知道就行 )

# rpm -qi zabbix-agent
Name        : zabbix-agent
Version     : 4.0.0
Release     : 2.el7
Architecture: x86_64
Install Date: 2020年03月23日 星期一 10时51分58秒
Group       : Applications/Internet
Size        : 1532742
License     : GPLv2+
Signature   : RSA/SHA512, 2018年10月01日 星期一 17时40分27秒, Key ID 082ab56ba14fe591
Source RPM  : zabbix-4.0.0-2.el7.src.rpm
Build Date  : 2018年10月01日 星期一 16时41分55秒
Build Host  : builds.zabbix.lan
Relocations : (not relocatable)
URL         : http://www.zabbix.com/
Summary     : Zabbix Agent
Description :
Zabbix agent to be installed on monitored systems.

rpm -ql 查询指定软件包所安装的目录、文件列表

# rpm -ql zabbix-agent
#配置文件目录
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
#程序使用的库文件
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd						#命令目录
#文档目录
/usr/share/doc/zabbix-agent-4.0.0
/usr/share/doc/zabbix-agent-4.0.0/AUTHORS
/usr/share/doc/zabbix-agent-4.0.0/COPYING
/usr/share/doc/zabbix-agent-4.0.0/ChangeLog
/usr/share/doc/zabbix-agent-4.0.0/NEWS
/usr/share/doc/zabbix-agent-4.0.0/README
/usr/share/man/man8/zabbix_agentd.8.gz		#帮助手册
/var/log/zabbix								#日志文件
/var/run/zabbix								#启动时运行进程的pid文件

rpm -qc 查询指定软件包的配置文件

# rpm -qc zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

rpm -qf 查询文件或目录属于哪个RPM软件

# which wget
/usr/bin/wget

# rpm -qf /usr/bin/wget
wget-1.14-15.el7_4.1.x86_64

# rpm -qf /etc/zabbix/zabbix_agentd.conf
zabbix-agent-4.0.0-2.el7.x86_64

ps:如何查询命令或文件是那个包提供的

rpm -qf 有一个弊端: 只能查看系统中已经存在的命令和文件--->对应的软件包?

​ 当真正要查询一个系统中不存在的命令,或文件,我们会选择使用 yum provides 去查询

# yum provides chattr
e2fsprogs-1.42.9-16.el7.x86_64 : Utilities for managing ext2, ext3, and ext4 filesystems
源    :base
匹配来源:
文件名    :/usr/bin/chattr

3.RPM总结

1.如何查询 util-linux 软件包安装了哪些文件?

# rpm -ql util-linux

2.如何查询 mkdir 命令是由哪个 RPM 软件包安装的?

# rpm -qf $(which mkdir)
coreutils-8.22-21.el7.x86_64

3.安装 .rpm 软件包时,-i、-U、选项有何区别?

-i   #安装一个rpm包

-U   #升级一个rpm包()

总结下rpm牵扯到哪些相关的参数:

​ rpm

​ 选项:

​ -ivh 安装一个rpm包,并显示详细信息,同时打印安装的进度条

​ -Uvh 升级一个rpm包,并显示详细信息,同时打印安装的进度条 (如果软件不存在则按安装操作)

​ (提供软件名称即可,不用带软件的版本号之类的)

​ -e 卸载软件包

​ -q 查询软件包

​ -qa 查询所有已安装的软件包

​ -ql 查询软件的存放路径 (所以的文件)

​ -qc 查询软件的配置文件

​ -qf 查询系统中已存在的命令或者文件 所属那个rpm包提供

posted @ 2022-04-13 00:35  小迷茫c  阅读(181)  评论(0)    收藏  举报