游乐游手机版
首页/系统平台/文章详情

Linux RPM软件包安装更新卸载方法

时间:2026-06-24 22:33
Linux下的软件包管理:RPM 完全指南 在 Linux 操作系统的软件管理中,几乎绕不开 RPM 这款核心工具。RPM 的全称为 Redhat Package Manager,由 Redhat 公司提出,专门用于管理 Linux 下的软件包。简而言之,Linux 系统在安装时,除了几个核心模块之

Linux下的软件包管理:RPM 完全指南

在 Linux 操作系统的软件管理中,几乎绕不开 RPM 这款核心工具。RPM 的全称为 Redhat Package Manager,由 Redhat 公司提出,专门用于管理 Linux 下的软件包。简而言之,Linux 系统在安装时,除了几个核心模块之外,其余绝大多数模块都是通过 RPM 来完成的。RPM 提供了五种核心操作模式:安装、卸载、升级、查询和验证,满足了日常软件管理的大部分需求。

接下来,我们逐一深入这几种操作的具体用法与实战技巧。

RPM 安装操作

最基本的安装命令非常简洁:

rpm -i 需要安装的包文件名

举个例子,如果你想安装一个名为 example.rpm 的软件包,直接执行:

rpm -i example.rpm

不过,在实际工作中,更常用的还是带参数的版本。加上 -v 可以在安装过程中显示正在安装的文件信息,再加上 -h 则会显示安装进度条。因此,完整命令通常是:

rpm -ivh example.rpm

这组参数组合在一起,已经成为日常安装 RPM 包的标准操作方式。

RPM 查询操作

查询操作可能是日常使用频率最高的功能之一。它的基本命令是:

rpm -q …

在此基础上,可以搭配不同的附加参数来满足各种查询需求:

  • -a:查询所有已经安装的包
  • -i:显示安装包的信息
  • -l:显示安装包中的所有文件被安装到哪些目录下
  • -s:显示安装包中的所有文件状态及被安装到哪些目录下
  • -p:查询的是 安装包 的信息(注意,是还没安装的 .rpm 文件)
  • -f:查询的是 已安装的某文件 所属的包信息

来看几个实际例子:

rpm -qa | grep tomcat4          # 查看 tomcat4 是否被安装
rpm -qip example.rpm            # 查看 example.rpm 安装包的信息
rpm -qif /bin/df                # 查看 /bin/df 文件所在安装包的信息
rpm -qlf /bin/df                # 查看 /bin/df 文件所在安装包中的各个文件分别被安装到哪个目录下

注意,-p-f 的区别很关键:前者针对的是未安装的 .rpm 文件,后者针对的是系统中已有的文件。

RPM 卸载操作

卸载操作的命令是:

rpm -e 需要卸载的安装包

卸载前,别忘了先用 rpm -q … 查出确切的包名。例如:

rpm -e tomcat4

这里有个坑需要留意:包名不能带 .rpm 后缀。例如,卸载 proftpd-1.2.8-1 时,正确写法是 rpm -e proftpd-1.2.8-1rpm -e proftpd,但绝对不能写成 rpm -e proftpd-1.2.8-1.i386.rpm

如果遇到“... is needed by ...”这样的提示,说明该包被其他软件依赖,不能随意卸载。可以添加 --nodeps 参数强制卸载,但风险需自行承担。

RPM 升级操作

升级的操作同样简单:

rpm -U 需要升级的包

实际使用中,通常也会带上 -v-h 参数:

rpm -Uvh example.rpm

RPM 验证操作

验证操作用于检查文件是否被篡改过。命令是:

rpm -V 需要验证的包

比如验证 /etc/tomcat4/tomcat4.conf 这个文件:

rpm -Vf /etc/tomcat4/tomcat4.conf

输出信息类似:S.5....T c /etc/tomcat4/tomcat4.conf。其中,S 表示文件大小被改过,T 表示文件日期被改过。更多验证信息的说明,可以用 man rpm 查阅。

RPM 的其他附加命令

除了刚才提到的,还有几个常用参数值得记一下:

  • --force:强制操作,比如强制安装或删除
  • --requires:显示该包的依赖关系
  • --nodeps:忽略依赖关系并继续操作

可以说,RPM 的出现让 Linux 下的软件安装、卸载和升级变得容易多了。它原本是 Red Hat 发行版的专属工具,但由于遵循 GPL 规则且功能强大,逐渐被其他发行版广泛采纳。

语法和选项

完整的 RPM 命令语法是:

rpm (选项)(参数)

其中,选项部分非常丰富,列几个常用的:

-a:查询所有套件
-b<完成阶段><套件档>+ 或 -t<完成阶段><套件档>+:设置包装套件的完成阶段
-c:只列出组态配置文件(需配合 -l 使用)
-d:只列出文本文件(需配合 -l 使用)
-e<套件档> 或 --erase<套件档>:删除指定的套件
-f<文件>+:查询拥有指定文件的套件
-h 或 --hash:安装时列出标记
-i:显示套件的相关信息
-i<套件档> 或 --install<套件档>:安装指定的套件档
-l:显示套件的文件列表
-p<套件档>+:查询指定的 RPM 套件档
-q:使用询问模式
-R:显示套件的关联性信息
-s:显示文件状态(需配合 -l 使用)
-U<套件档> 或 --upgrade<套件档>:升级指定的套件档
-v:显示指令执行过程
-vv:详细显示指令执行过程,便于排错

参数部分很简单,就是你要操作的 RPM 软件包文件名。

实战:安装与卸载的进阶技巧

如何安装 rpm 软件包

最标准的安装方式是:

rpm -ivh your-package.rpm

安装时如果遇到 ... conflict with ... 的警告,说明要安装的包里有些文件会覆盖现有文件。默认情况下无法继续,可以加 --force 参数强制安装。如果遇到 ... is needed by ...... is not installed ...,说明缺少依赖,可以用 --nodeps 忽略。不过要注意,rpm -i --force --nodeps 这种组合虽然能安装任何包,但强行安装的软件可能无法完全正常工作。

如何安装 .src.rpm 软件包

.src.rpm 结尾的包是包含源代码的,安装时需要编译。有两种方法:

方法一:

rpm -i your-package.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bp your-package.specs   # 一个和你的软件包同名的specs文件
cd /usr/src/redhat/BUILD/your-package/   # 一个和你的软件包同名的目录
./configure                         # 和编译普通源码一样,可以加参数
make
make install

方法二:

rpm -i you-package.src.rpm
cd /usr/src/redhat/SPECS

前两步和方法一相同,然后执行:

rpmbuild -bb your-package.specs   # 一个和你的软件包同名的specs文件

这时在 /usr/src/redhat/RPM/i386/(也可能是 i686、noarch 等)目录下,会生成一个编译好的二进制 RPM 包。最后执行 rpm -i new-package.rpm 安装即可。

如何不安装但提取 rpm 包中的文件

可以用 rpm2cpiocpio 这两个工具配合:

rpm2cpio xxx.rpm | cpio -vi
rpm2cpio xxx.rpm | cpio -idmv
rpm2cpio xxx.rpm | cpio --extract --make-directories

其中,-i--extract 相同,表示提取文件;-v 显示执行过程;-d--make-directory 相同,表示根据包中文件路径建立目录;-m 保持文件的更新时间。

查看与 rpm 包相关的文件和信息

下面以软件包 mysql-3.23.54a-11 为例,演示几种常见查询场景。

1. 查看系统中安装的所有 rpm 包

rpm -qa      # 列出所有安装过的包

如果想查找包含某个字符串(比如 sql)的包:

rpm -qa | grep sql

2. 获取某个包的完整名称

rpm -q mysql

这条命令会返回系统中安装的 mysql 包全名,比如 mysql-3.23.54a-11

3. 查看一个包中的文件安装到了哪些目录

rpm -ql 包名

注意,包名不带 .rpm 后缀。如果只想知道可执行程序的位置,也可以用 which 命令,比如 which mysql

4. 查看一个包中包含哪些文件

  • 对于未安装的包:rpm -qlp ****.rpm
  • 对于已安装的包:rpm -ql ****.rpm

5. 获取包的版本、用途等信息

  • 对于未安装的包:rpm -qip ****.rpm
  • 对于已安装的包:rpm -qi ****.rpm

6. 查找某个程序是由哪个包安装的

rpm -qf `which 程序名`    # 返回包的全名
rpm -qif `which 程序名`   # 返回包的有关信息
rpm -qlf `which 程序名`   # 返回包的文件列表

注意,这里的符号不是引号,而是键盘左上角的反引号 `。也可以把 qilf 组合在一起用,同时输出包信息和文件列表。

7. 查找某个文件属于哪个包

这个方法适用于任何文件,不限于可执行程序。先用 whereiswhich 获取文件的完整路径,然后用 rpm -qf

whereis ftptop
ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz

rpm -qf /usr/bin/ftptop
proftpd-1.2.8-1

rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt
proftpd-1.2.8-1

以上这些就是 RPM 包管理的核心操作了。熟练之后,你会发现 Linux 下的软件管理其实相当顺手。

来源:https://www.jb51.net/LINUXjishu/578917.html
上一篇微软现已发布Win11 Canary通道最新预览版28000.1199(KB5068860)例行更新 下一篇Linux虚拟机快照拍摄与管理方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送