我对 Red Hat 和/或 Fedora(和/或其他发行版?)中的 RPM 有点困惑。我当然可以接受 64 位操作系统需要 64 位 RPM,32 位操作系统需要 32 位 RPM,但是...如果我有一个用于 ... OpenOffice.org 的 RPM,那么该 RPM 是否对我的任何接受 RPM 的操作系统都有效,还是我需要寻找专门针对我所使用的操作系统定制的 RPM?
答案1
像往常一样:答案取决于。 RPM(或基本上任何给定的二进制包容器)包含可运行的代码。大多数情况下,代码依赖于某些库或程序,包指定它确实依赖于libA
版本 >= 1.0 中的库。
现在采用两个不同的发行版,两者都使用 RPM 打包格式。假设有人调用软件包 libA-1.0,因此您的 RPM 指定它依赖于 libA。第二个二进制发行版具有不同的 naimg 方案,并在包前面加上前缀,因此language
它被命名为language-libA
。即使这两个 libA 包的内容相同,包管理器也无法知道这一点。当然,您可以强制 RPM 无论如何都只安装软件包而不查看依赖关系,但这通常只是要求惩罚。
如果两个发行版相关或者甚至相互依赖,那么问题就不那么严重了:例如,Ubuntu 基于 debian,因此共享许多命名约定和软件包,因此您可以将 debian 的软件包构建传输到 Ubuntu 机器。
它还在很大程度上取决于包是用什么语言编写的:如果你有像Python这样的解释,其中包基本上只是一堆文本文件,为不同的发行版获取包通常很容易处理,但如果它是用Python编写的C++ 和 dependent 以及两个发行版都使用不同版本的核心库或编译器,你基本上就不走运了。
答案2
此外坦特的回答。它基本上取决于本质上是带有元数据的 zip 文件的二进制内容是否正确链接,如果链接不正确,则必须重新链接,否则将无法工作。有些 RPMS 可能只包含不需要链接的 perl 模块之类的东西,因此只要它们位于正确的位置,它们就可以工作。然而,IIRC,有不止一种 RPM 格式,我相信 OpenSuse 的 RPM 格式与 Red Hat 略有不同,因此不适用于 Fedora。显然,Fedora 软件包不太可能在 Red Hat 上运行,因为库版本差异很大,并且链接将关闭。
简而言之,不,这行不通,别费心去尝试。只有像为 flash、oracle(您会注意到 oracle 需要重新链接)、avg 等提供的通用 RPM 可能在其他地方工作。