Linux基础之(rpm管理软件包)

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战


RPM基本概述

什么是rpm

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

rpm包名组成部分

RPM包命名以-将软件分成了若干部分bash-4.2.46-28.el7.x86_64.rpm

image-20211109134740544

如何获取rpm包

在我们刚开始学习rpm包,建议先从本地镜像中获取rpm但实际生产环境中大多数是通过联网方式获取rpm包,或者搭建企业私有包管理仓库平台。

其他类型的安装包

Linux中除了rpm格式类型的包,还存在一些其他类型的软件包。

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

RPM包管理命令

rpm安装软件包

  • -i:安装软件包
  • -v:显示安装过程.
  • -h:显示安装进度条

使用rpm命令安装本地路径下软件包

[root@web ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
[root@web ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
复制代码

使用rpm命令安装互联网上的软件包

[root@web ~]# 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-->依赖-->BB-->依赖-->C而C-->依赖-->A。当我们需要安装的rpm类型包出现了依赖关系应该如何处理,比如安装samba软件包。

[root@web ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm
	error: Failed dependencies:
	libxattr-tdb-samba4.so()(64bit) is needed by samba-0:4.8.3-4.el7.x86_64
	libxattr-tdb-samba4.so(SAMBA_4.8.3)(64bit) is needed by samba-0:4.8.3-4.el7
.x86_64
	samba-common-tools = 4.8.3-4.el7 is needed by samba-0:4.8.3-4.el7.x86_64
	samba-libs = 4.8.3-4.el7 is needed by samba-0:4.8.3-4.el7.x86_64
复制代码
  1. 尝试安装依赖包samba-common

    [root@web ~]# rpm -ivh /mnt/Packages/samba-common-4.9.1-6.el7.noarch.rpm
    复制代码
  2. 尝试安装依赖包samba-libs

    [root@web ~]# rpm -ivh /mnt/Packages/samba-libs-4.8.3-4.el7.x86_64.rpm
    复制代码
  3. 尝试安装依赖包samba-common-tools

    [root@web ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm
    复制代码
  4. 最后尝试安装samba主程序包

    [root@web ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm
    复制代码

PS:由于rpm工具安装rpm包依赖关系太强,所以通常我们都是使用yum来解决

rpm升级软件包

下载zabbix-agent软件包,分别下载3.0低版本、然后下载4.2高版本来进行测试与实验。

[root@web ~]# wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

[root@web ~]# 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@web ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
    复制代码
  2. 尝试使用rpm -ivh安装zabbix-agent-4.2高版本(会出现报错)

    [root@web ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
    复制代码
  3. 使用rpm -Uvh升级zabbix-agent4.2版本。(完美解决)

    [root@web ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
    复制代码

rpm卸载软件包

如果需要卸载rpm包,可以先查看该包是否存系统中,然后在进行卸载操作。

  1. 使用rpm -q查询软件包是否存在系统

    [root@web ~]# rpm -q zsh
    复制代码
  2. 使用rpm -e卸载软件包

    [root@web ~]# rpm -e zsh
    复制代码

rpm查询软件包

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

    [root@web ~]# rpm -q vsftpd
    复制代码
  • 模糊查找系统已安装的rpm

    [root@web ~]# rpm -qa |grep ftp
    复制代码
  • 查询vsftpd软件包相关信息

    [root@web ~]# rpm -qi vsftpd
    复制代码
  • 查询vsftpd软件包所安装后在系统中生成的文件路径

    [root@web ~]# rpm -ql vsftpd
    复制代码
  • 查询vsftpd软件包的主配置文件

    [root@web ~]# rpm -qc vsftpd
    复制代码
  • 查询配置文件或系统命令是由哪个rpm包提供

    [root@web ~]# rpm -qf /etc/vsftpd/vsftpd.conf
    [root@web ~]# rpm -qf /usr/sbin/vsftpd
    [root@web ~]# rpm -qf $(which cd)
    bash-4.2.46-31.el7.x86_64
    # rpm需要知道命令的绝对路径,如果不存在该命令是无法查找到该命令所属的软件包
    复制代码
  • 查询未安装的rpm包会产生哪些文件

    [root@web ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
    复制代码