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

Linux系统RPM软件包安装实用技巧

时间:2026-06-22 11:23
在Linux系统中,RPM(RedHat Package Management)是最常用的软件包管理工具之一。无论是安装、卸载还是查询软件包,掌握一套熟练的RPM命令能让日常运维事半功倍。下面从安装、卸载、查询到一些进阶技巧,逐一拆解。 1 安装rpm软件包 安装RPM包直接用rpm命令即可。执行

在Linux系统中,RPM(RedHat Package Management)是最常用的软件包管理工具之一。无论是安装、卸载还是查询软件包,掌握一套熟练的RPM命令能让日常运维事半功倍。下面从安装、卸载、查询到一些进阶技巧,逐一拆解。

1. 安装rpm软件包

安装RPM包直接用rpm命令即可。执行:

rpm -i your-package.rpm

这里your-package.rpm是包文件名,通常放在当前目录下。安装过程中可能会遇到两类常见提示:

  • ... conflict with ... —— 说明包里的某些文件会覆盖现有文件。缺省情况下安装会被拒绝,此时可以用 rpm --force -i 强制安装。
  • ... is needed by ...... is not installed ... —— 说明依赖的软件缺失。可以用 rpm --nodeps -i 忽略依赖检查,强行装上。

换句话说,rpm -i --force --nodeps 能摆脱几乎所有约束,什么包都能安上。但强制安装的软件包不保证功能完整,使用时需谨慎。

2. 安装.src.rpm软件包

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

方法一:

  1. 执行 rpm -i your-package.src.rpm
  2. 进入 /usr/src/redhat/SPECS 目录
  3. 运行 rpmbuild -bp your-package.specs(specs文件与包同名)
  4. 进入 /usr/src/redhat/BUILD/your-package/ 目录(与包同名)
  5. 执行 ./configure(可加参数,和编译普通源码一样)
  6. 执行 make
  7. 执行 make install

方法二:

  1. 执行 rpm -i you-package.src.rpm
  2. 进入 /usr/src/redhat/SPECS(前两步与方法一相同)
  3. 运行 rpmbuild -bb your-package.specs

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

3. 卸载rpm软件包

命令格式:rpm -e 包名。包名可以包含版本号,但不能带有.rpm后缀。示例:卸载proftpd-1.2.8-1,以下格式都有效:

rpm -e proftpd-1.2.8-1
rpm -e proftpd-1.2.8
rpm -e proftpd-
rpm -e proftpd

下面几种写法是错误的:

rpm -e proftpd-1.2.8-1.i386.rpm
rpm -e proftpd-1.2.8-1.i386
rpm -e proftpd-1.2
rpm -e proftpd-1

卸载时如果出现 ... is needed by ...,说明该软件被其他程序依赖,不能随便卸。可以用 rpm -e --nodeps 强制卸载,但同样可能影响系统稳定性。

4. 不安装但获取rpm包中的文件

借助 rpm2cpiocpio 工具,可以在不安装包的情况下提取其中文件:

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

参数说明:-i(或--extract)表示提取文件;-v 显示执行过程;-d--make-directories)按包中原路径创建目录;-m 保持文件的时间戳。

5. 查看与rpm包相关的文件和其他信息

以下举例均以软件包 mysql-3.23.54a-11 为参考。

5.1 已安装的包有哪些?

rpm -qa 会列出所有安装过的包。若需筛选含特定字符串的包,比如sql

rpm -qa | grep sql

5.2 获取某个包的文件全名

rpm -q mysql 返回系统中安装的MySQL包全名(如mysql-3.23.54a-11),从中可获取版本信息。

5.3 包中的文件安装到了哪里?

rpm -ql 包名(包名不含.rpm)。例如 rpm -ql mysqlrpm -ql mysql-3.23.54a-11。若只想知道可执行文件路径,也可以用 which mysql

5.4 一个rpm包中包含了哪些文件?

对于未安装的包:rpm -qlp ****.rpm。对于已安装的包:rpm -ql ****.rpm(注意包名写法)。

5.5 获取软件包的版本、用途等信息

未安装的包:rpm -qip ****.rpm。已安装的包:rpm -qi ****.rpm

5.6 某个程序是哪个包安装的?

rpm -qf `which 程序名`(注意不是引号,而是反引号,即键盘左上角的`键)。例如:

# rpm -qf `which ftptop`
proftpd-1.2.8-1

还可搭配其他参数:rpm -qif 返回信息,rpm -qlf 返回文件列表,rpm -qilf 同时输出两者。

5.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 -q 是查询核心,后面可跟:i(info,软件包信息)、l(list,文件列表)、a(all,所有包)、f(file,根据文件查询)、p(package,根据包查询)。查询条件可通过 grep 或反引号内的命令产生。

6. 关于rpm软件包的一些相关知识

6.1 什么是rpm

RPM 即 RedHat Package Management,是 RedHat 的发明之一,用于管理软件包的安装、升级、配置和卸载。

6.2 为什么需要rpm

操作系统下有成百上千的软件包,彼此存在依赖关系,版本、安装、卸载都需要自动化。RPM 正是为解决这些问题而生的管理系统。只要软件包符合 RPM 标准,就能方便地安装、升级、卸载。

6.3 是不是所有Linux都使用rpm

很多Linux发行版都使用RPM(如RedHat、Mandrake等),但并非全部。其他系统有自己的包管理工具,例如Debian的deb包、Slackware的包管理系统。由于RPM的源代码可以跨平台编译,理论上其他系统也能用RPM。

6.4 rpm包的文件名为什么那么长

文件名包含了软件包名称、版本号、发行号、目标操作系统、硬件架构等信息。例如 mypackage-1.1-2TL.i386.rpmmypackage是包名,1.1是版本,2是发行号,TL表示用于TL操作系统(也可能是RH等),i386表示适用Intel x86平台。

6.5 软件包文件名中的i386、i686是什么意思

这些标识适用于哪种硬件架构:

  • i386:适用于Intel 80386以上x86架构(IA32)。
  • i686:适用于Intel 80686以上(奔腾Pro以上)的x86架构(IA32),通常针对CPU做了优化。
  • noarch:与硬件架构无关,可通用。

i686包向后兼容性一般,i386包可在所有x86机器上运行。如今奔腾Pro以下的CPU已很少见,普通机器都可以使用i686包。

6.6 不同操作系统发行的rpm包可否混用?

已编译好的二进制RPM包因操作系统环境不同,一般不能混用。而以.src.rpm发行的包需在本地编译,通常可在不同系统下安装。

6.7 使用rpm时遇到的一些特殊问题

Q:rpm -e **.rpm 无法删除包?
A: 包名不要带.rpm,正确格式是 rpm -e 包名(可含版本号,但无后缀)。

Q: 在Windows系统下有没有读取RPM文件的工具?
A: 可以使用 wincmd 配合 RPM 插件。

Q: 是否可以通过FTP安装/升级RPM包?
A: 可以。例如 rpm -ivh ftp://xxxxxxxx/PATH2SomeRPM

Q: RPM安装时提示已有包版本过高怎么办?
A: 如果系统中相关包版本较新,导致依赖文件缺失,有两种办法:一是在系统文件中找到功能相近的文件,做个符号链接到所需目录;二是考虑降级或使用兼容版本。具体情况需灵活处理。

来源:https://www.jb51.net/os/Fedora/1365.html
上一篇在Fedora Linux 8系统上配置SAMBA服务器的完整教程 下一篇Fedora安装Xmame模拟器运行拳皇97教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

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

同类最新

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

更多
微软详解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)方式进行推送