rpm基本概述
什么是rpm
RPM全称RedHat Package Manager 缩写,由红帽开发用于软件包的安装,升级,卸载与查询。
rpm包名组成部分
在我们刚开始rpm包,建议先从本地镜像中获取rpm但实际生产环境中大多数是通过互联网方式获取rpm包,或者搭建企业私有包管理平台
其他类型的安装包
在linux中除了rpm格式类型的包,还存在一些其他类型的软件包
分类 | 安装 | 版本 |
---|---|---|
rpm包 | 预先编译打包,安装简单 | 软件版本偏低 |
源码包 | 手动编译打包,安装繁琐 | 软件版本随意 |
二进制包 | 解压及可使用,安装简单 | 不能修改源码 |
rpm包管理命令
rpm安装软件包
-i 安装软件包
-v 显示安装过程
-h 显示安装进度条
1.使用rpm命令安装本地路径下软件包
[root@localhost ~]# rpm -ivh ./tree-1.6.0-10.el7.x86_64.rpm
2.使用rpm命令安装互联网上的软件包
[root@localhost ~]# 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依赖包安装
包依赖是指A–>依赖–>B,B–>依赖–>C,而C–>依赖–>A。当我们需要安装的rpm类型包出现了依赖关系如何处理:
[root@localhost ~]# rpm -ivh samba-4.8.3-4.el7.x86_64.rpm
错误:依赖检测失败:
libCHARSET3-samba4.so()(64bit) 被 samba-0:4.8.3-4.el7.x86_64 需要
libCHARSET3-samba4.so(SAMBA_4.8.3)(64bit) 被 samba-0:4.8.3-4.el7.x86_64 需要
libauth-samba4.so()(64bit) 被 samba-0:4.8.3-4.el7.x86_64 需要
等等
1.尝试安装依赖包samba-common-tools
[root@localhost ~]# rpm -ivh samba-common-tools-4.8.3-4.el7.x86_64.rpm
错误:依赖检测失败:
libCHARSET3-samba4.so()(64bit) 被 samba-common-tools-0:4.8.3-4.el7.x86_64 需要
libCHARSET3-samba4.so(SAMBA_4.8.3)(64bit) 被 samba-common-tools-0:4.8.3-4.el7.x86_64 需要
等等
2.尝试安装依赖包samba-libs
[root@localhost ~]# rpm -ivh ./samba-libs-4.8.3-4.el7.x86_64.rpm
3.再次尝试安装依赖包samba-common-tools
[root@localhost ~]# rpm -ivh samba-common-tools-4.8.3-4.el7.x86_64.rpm
4.最后尝试安装samba主程序包
[root@localhost ~]# rpm -ivh ./samba-4.8.3-4.el7.x86_64.rpm
注意:由于rpm工具安装rpm依赖关系太强,所以通常我们用yum来解决
rpm升级软件包
下载zabbix-agent软件包,分别下载3.0低版本,然后下载4.2高版本来进行测试
wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm
1.先安装zabbix-agent-3.0低版本
[root@localhost ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
2.尝试使用rpm -ivh安装zabbix-agent-4.2高版本(会出现报错)
[root@localhost ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
3.使用rpm -Uvh升级zabbix-agent-4.2版本(成功升级安装)
[root@localhost ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
rpm查询软件包
选项 | 描述 |
---|---|
rpm -q | 查看指定软件包是否安装 |
rpm -qi | 查看指定软件的详细信息 |
rpm -qc | 查询指定软件包的配置文件 |
rpm -qf | 查询文件或目录隶属于哪个rpm软件 |
rpm -ql | 查看指定软件包安装的目录,文件列表 |
rpm -qa | 查看系统中已安装的所有rpm软件包列表 |
1.查询vsftpd这个rpm是否安装
[root@localhost ~]# rpm -q vsftpd
未安装软件包 vsftpd
2.模糊查找系统已安装的rpm包
[root@localhost ~]# rpm -qa
3.查询vsftp软件包相关信息
[root@localhost ~]# rpm -qi vsftpd
4.查询vsftp软件包所安装后在系统中生成的文件路径
[root@localhost ~]# rpm -ql vsftpd
5.查询vsftpd软件包的主配置文件
[root@localhost ~]# rpm -qc vsftpd
6.查询配置文件或系统命令是由哪个rpm包提供
[root@localhost ~]# rpm -qf /etc/vsftpd/ftpusers
[root@localhost ~]# rpm -qf /usr/lib/systemd/system/vsftpd.target
7.查询未安装的rpm包会产生哪些文件
[root@localhost ~]# rpm -qlp ./zabbix-agent-4.2.0-1.el7.x86_64.rpm
8.如何卸载rpm包? ( 不太建议生产环境执行卸载操作 )
[root@localhost ~]# rpm -e zabbix-agent #卸载软件(清理对应的文件)
[root@localhost ~]# rpm -qa zabbix-agent #检查是否已卸载
rpm包管理总结
1.如何查询uil-linux软件包安装了那些文件
[root@localhost ~]# rpm -ql util-linux
2.如何查询mkdir命令是由哪个rpm软件包安装的
[root@localhost ~]# rpm -qf $(which mkdir)
coreutils-8.22-23.el7.x86_64
rpm -qf 有一个弊端: 只能查看系统中已经存在的命令和文件—>对应的软件包?
当真正要查询一个系统中不存在的命令,或文件,我们会选择使用 yum provides 去查询
3.安装.rpm软件包时,-i,-U选项有何区别
-i 安装一个rpm包
-U 升级一个rpm包()
4.选项:
-ivh 安装一个rpm包,并显示详细信息,同时打印安装的进度条
-Uvh 升级一个rpm包,并显示详细信息,同时打印安装的进度条 (如果软件不存在则按安装操作)
-e 卸载软件包
-q 查询软件包
-qa 查询所有已安装的软件包
-ql 查询软件的存放路径 (所有的文件)
-qc 查询软件的配置文件
-qf 查询系统中已存在的命令或者文件 所属那个rpm包提供