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包提供
浙公网安备 33010602011771号