RPM 是否跨平台有效?

Nat*_*ate 7 fedora rpm packaging rhel package-management

我对 Red Hat 和/或 Fedora(和/或其他发行版?)中的 RPM 有点困惑。我当然可以接受 64 位操作系统需要 64 位 RPM,32 位操作系统需要 32 位 RPM 但是...如果我有... OpenOffice.org 的 RPM,该 RPM 是否有效对于我的任何接受 RPM 的操作系统,或者我是否需要寻找专门为我正在使用的操作系统量身定制的 RPM?

tan*_*nte 7

像往常一样:答案取决于。RPM(或基本上任何给定的二进制包容器)包含可运行的代码。大多数情况下,代码依赖于某些库或程序,包指定它确实依赖于libA版本 >= 1.0 的库。

现在采用两种不同的发行版,都使用 RPM 打包格式。假设有人调用包 libA-1.0,因此您拥有的 RPM 指定它依赖于 libA。第二个二进制发行版有一个不同的 naimg 方案,并在包前面加上前缀,language所以它被命名为language-libA。即使这两个 libA 包的内容相同,包管理器也无法知道这一点。您当然可以强制 RPM 只安装软件包而不查看依赖项,但这通常只是要求惩罚。

如果两个发行版相互关联或什至基于另一个发行版,问题就不那么严重:例如,Ubuntu 基于 debian,因此共享许多命名约定和软件包,因此您可以将 debian 的软件包构建转移到 Ubuntu 机器上。

这也很大程度上取决于包是用什么语言编写的:如果你有像 Python 这样解释的东西,其中包基本上只是一堆文本文件,通常很容易处理不同发行版的包,但如果它是用C++ 和depends 以及两个发行版都使用不同版本的核心库或编译器,您基本上不走运。