全面解析 Linux 中的 RPM 包管理技巧

在这里插入图片描述

RPM 软件包

RPM 的介绍

为了方便用户在 Linux 操作系统中安装软件,尽可能像 Windows 中软件安装一样,简单、高效、便捷。一些 Linux 操作系统厂商或开发者直接在已知的系统中将软件源码编译好,使用者可以直接下载并进行安装、升级、卸载等操作。在 Linux 操作系统中常见的软件包格式有两种:rpm 和 deb。而在 Red Hat、CentOS、openSUSE 等使用的是 rpm 软件格式。

RPM 最早是由 Red Hat 开发出来,由于很好用,所以很多发行版也利用 RPM 来进行软件包的管理。RPM 全名 Red Hat Package Manager,最大的特点就是把需要安装的软件提前编译、打包,然后在 RPM 包里留下用以记录软件依赖关系的相关数据。当用户安装时,优先查看这些数据,如果系统满足数据要求就安装软件包,否则不能安装。安装完成后,将软件包相关信息记录到 RPM 自己的数据库中,便于查询和卸载等。所以说 RPM 的优点是方便安装、卸载、查询,缺点就是只能在指定的操作系统上使用,所以不同厂商的 RPM 包,甚至同一厂商不同版本操作系统的 RPM 包都不通用。

RPM 命令

RPM 包的相关文件一般都会放在对应的目录中,比如 RPM 包安装后,配置文件会放在 /etc 下,执行文件会放在 /usr/bin 下,链接库文件会放在 /usr/lib 下,帮助与说明文档会放在 /usr/share/man/usr/share/doc 目录下。

命令语法: rpm [命令选项] 软件包

常用命令选项:

  • -i 安装
  • -v 显示详细信息
  • -h 显示安装进度
  • -e 卸载
  • -U 升级,如果系统中有低版本的就会升级,如果系统没有安装相应的软件包,则安装。
  • -F 有条件的升级,会检测用户指定的软件包是否已经安装到 Linux 操作系统中。
  • --nodeps 忽略软件包之间的依赖关系。
  • --replacefiles 覆盖文件。
  • --replacepkgs 修复。
  • --force 强制。
  • --test 测试。
  • -q 查询指定的软件包是否安装。
    • -qi 查看指定的软件包的信息,包括开发商、版本、说明。
    • -ql 查看指定软件包中所包含的文件列表。
    • -qc 查看指定软件包的配置文件。
    • -qa 查看本机安装的所有包。
    • -qf 查看一个文件归属于哪个已安装的软件包。

示例:利用 RPM 命令安装软件包:httpd.rpm

挂载安装盘到 mnt 目录:

# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.

安装软件包:

# rpm -ivh /mnt/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm
Verifying...       ################################# [100%]
Preparing...       ################################# [100%]
正在升级/安装...
  1:httpd-2.4.6-93.el7.centos.x86_64  ################################# [100%]

查看已安装的所有软件包:

# rpm -qa
bash-4.2.46-34.el7.x86_64
coreutils-8.22-24.el7.x86_64
httpd-2.4.6-93.el7.centos.x86_64
...

查看某个软件包是否安装:

# rpm -qa | grep httpd
httpd-2.4.6-93.el7.centos.x86_64

查看系统中的文件属于哪个安装包:

# rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.4.6-93.el7.centos.x86_64

查看软件包中有哪些文件(已安装的包):

# rpm -ql httpd
/etc/httpd/conf/httpd.conf
/usr/sbin/httpd
/usr/lib/systemd/system/httpd.service
...

查看软件包中有哪些文件(未安装的包):

# rpm -qpl /mnt/Packages/mysql-community-server-5.7.31-1.el7.x86_64.rpm
/etc/my.cnf
/usr/sbin/mysqld
/var/lib/mysql
...

查看指定软件包中的配置文件:

# rpm -qc /mnt/Packages/mysql-community-server-5.7.31-1.el7.x86_64.rpm
/etc/my.cnf
/etc/logrotate.d/mysql
...

软件包卸载:

# rpm -e httpd

测试软件包是否可用:

# rpm -ivh /mnt/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm --test
Verifying...       ################################# [100%]
Preparing...       ################################# [100%]
# rpm -qa | grep httpd

强制安装:

# rpm -ivh /mnt/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm --force
Verifying...       ################################# [100%]
Preparing...       ################################# [100%]
正在升级/安装...
  1:httpd-2.4.6-93.el7.centos.x86_64  ################################# [100%]
# rpm -qa | grep httpd
httpd-2.4.6-93.el7.centos.x86_64

覆盖安装:

# rpm -ivh /mnt/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm --replacefiles
Verifying...       ################################# [100%]
Preparing...       ################################# [100%]
软件包 httpd-2.4.6-93.el7.centos.x86_64 已经安装

修复软件:

# rpm -ivh /mnt/Packages/httpd-2.4.6-93.el7.centos.x86_64.rpm --replacepkgs
Verifying...       ################################# [100%]
Preparing...       ################################# [100%]
正在升级/安装...
  1:httpd-2.4.6-93.el7.centos.x86_64  ################################# [100%]

RPM 格式的软件包安装简单、快捷、高效,但是 RPM 软件包安装需要解决依赖关系,安装过程中必须首先解决依赖包的安装。解决依赖关系相对于初学者来说是比较痛苦的问题。

下面给出的是安装 dhcp 软件包时出现的依赖:

# rpm -ivh /mnt/Packages/dhcp-4.2.5-68.el7.centos.x86_64.rpm --test
错误:依赖检测失败:
libdns-export.so.100()(64bit) 被 dhcp-12:4.2.5-68.el7.centos.x86_64 需要
libirs-export.so.91()(64bit) 被 dhcp-12:4.2.5-68.el7.centos.x86_64 需要
libisc-export.so.95()(64bit) 被 dhcp-12:4.2.5-68.el7.centos.x86_64 需要
libisccfg-export.so.90()(64bit) 被 dhcp-12:4.2.5-68.el7.centos.x86_64 需要

为了能够更加高效的安装 RPM 包而不需要用户自己去解决依赖关系,可以使用 yum 软件仓库来安装,用户安装软件时的同时由 yum 自己解决依赖关系。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值