我想在 RedHat 8 上将 RPM 升级到版本 4.16。我目前安装的是 4.14.3。
当我尝试升级时,我得到“无事可做”:
$ sudo yum -y 升级 rpm 更新订阅管理存储库。 上次元数据过期检查:2022 年 10 月 12 日星期三上午 08:51:51 PDT 0:07:41 前。 依赖关系已解决。 没事做。 完全的!
我想也许我可以指定一个 RPM 的 URL,但是根据这个答案、RHEL RPM 存储库不公开。
如何在 RedHat 8 上升级到 RPM 4.16?
答案1
像 RHEL 这样的稳定发行版通常不提供最新版本的软件,仅向后移植错误修复和安全问题修复。如果 RPM 4.14 是 RHEL 8 存储库中可用的最新版本(它是 CentOS 8 Stream 存储库中可用的版本,因此它很可能也是可用于 RHEL 8 的最新版本),这就是您所坚持使用的 RPM 版本。
4.16 可在 RHEL 9 上使用(同样基于 CentOS 9 Stream),因此如果您出于某种原因需要 4.16,我建议升级到 RHEL 9。
(您可以尝试从源代码手动安装较新版本的 RPM,但我不推荐这样做,手动升级低级系统工具和库很容易破坏您的系统。)
答案2
它是不是关于 RHEL。
这是关于的交易最多Linux 发行版。它们并不是一些松散的组件拼凑在一起的集合。
它们实际上是一组非常严格的软件包,具有复杂的依赖关系,因此对于发行版 A 版本 N,您只能拥有 XY 和 Z 版本的组件,否则您的系统将停止运行,因为依赖关系将被破坏。
微软很早以前就通过 Windows Vista 解决了这个问题WinSxS,不幸的是它不适用于 Linux,原因如下:
- 维护起来非常昂贵
- 您需要注意构建时的依赖关系,而 Linux 发行版只有一个
/usr/include
目录 - Microsoft 在 API/ABI 核心组件(例如 ntoskrnl 和 user32)方面具有 100% 的稳定性,而 Linux 则不然。 Glibc 几乎每个版本都会添加新的 API,这使得协调所有库几乎成为不可能的任务。
RPM 是这样一个核心组件,您不能随意替换/更新它。您仍然可以从源代码编译新版本并将其安装到例如/usr/local
或,/opt/rpm
但将其与现有 RPM 数据库一起使用可能会导致您的 RPM 数据库对于现有 RPM 包管理器来说被破坏。