如何从 rpm 包版本获取原始库/包版本?

如何从 rpm 包版本获取原始库/包版本?

我使用 Centos 7,我需要知道我的 Xdmx 版本是什么。rpm -qayum list installed返回 rpm 包的版本,我认为它与原始 Xdmx 版本不同。

$yum list installed | grep Xdmx
xorg-x11-server-Xdmx.x86_64            1.15.0-7.el7                    @base 


$rpm -qa | grep Xdmx
xorg-x11-server-Xdmx-1.15.0-7.el7.x86_64

1.15.0-7.el7是 rpm 包的一个版本。我如何从中获取 Xdmx 版本?我阅读了Xdmx命令手册,但找不到任何检查Xdmx版本的方法。

我不确定我是否正确理解了 rpm 包的创建,所以我想澄清一下。Xdmx 只是一个例子,我想现在了解一般规则。Xorg 是 Xdmx 的作者。当 Xorg 的程序员编写一些库时,他们并不关心它会在哪个 Linux 发行版上运行。库的代码是通用的,如果有必要的依赖项,可以在任何 Linux 发行版上编译和启动。但大多数用户不想浪费时间,他们不想从源代码安装库,他们更喜欢编译后的包。RPM 包包含有关依赖项的信息,允许自动下载和安装 Linux 发行版所需的依赖项。我不知道针对不同 Linux 发行版的 rpm 包是否还有其他一些差异。让我们假设 Fedora 和 Centos 发布了 Xdmx 1.0 的 rpm 包。除了依赖项的差异之外,Fedora 和 Centos Xdmx rpm 包之间还有其他差异吗?也许 Fedora 的编译过程与 Centos 的编译结果不同?也许 Linux 发行版提供商对 Xdmx 库提供了一些自定义更改?如果依赖关系在 Centos 和 Fedora 上正常工作,那么 Xdmx 1.0 是否可能在 Fedora 上正常工作而在 Centos 上不能正常工作?

答案1

rpm 包的具体内容完全取决于维护者。

rpm 可能包含原始源中没有的补丁、配置文件和文档。

要确切了解 RPM 中的内容,你应该查找与包相对应的 SRPM(源 rpm),然后使用以下命令将其解压rpm2cpio <rpmname.rpm> | cpio -idmv

.spec 文件包含构建包的确切说明、对原始源代码以及所有相关文件的引用。

为了更好地理解这一点,我建议www.rpm.org/max-rpm/

这是一份关于 rpm 构建的完整详细指南,也是我构建 rpm 的首选参考。

回答您的其他问题:Fedora rpm 很可能无法在 CentOS 中运行;主要是因为 Centos 使用 init.d 和 Fedora systemd(不适用于大多数库)。

您应该坚持使用来自存储库的 rpm(epel 和 rpmforge 可以满足您的大部分需求)和源代码安装;选择和混合通过 http 下载的 rpm 不是一个好主意,也不是一种好的政策,而且会带来很多麻烦。

相关内容