如何检查RPM包使用什么压缩类型?

如何检查RPM包使用什么压缩类型?

我最近意识到 RPM 软件包几年前从 gzip 压缩转变为 xz 压缩。我需要检查我拥有的 RPM 包的压缩类型。我还需要检查我的系统在尝试解压 RPM 文件时考虑的压缩类型。

答案1

询问自定义的 RPM格式其中包括有效载荷压缩机标签(“有效负载压缩器名称”)如下所示:

rpm -q --queryformat '%{PAYLOADCOMPRESSOR}\n' -p qt-4.8.7-67.fc36.x86_64.rpm

顺便说一下其他有趣的标签是有效负载标志(“有效负载压缩器级别”)和有效负载格式(“有效负载格式(cpio)”)。

答案2

如果你使用rpm2cpio;您不需要知道压缩格式。您可以rpm2cpio像这样解压 rpm:

rpm2cpio your.rpm | cpio -idmv

答案3

讲话:支持哪些压缩格式?

很容易看出哪些内容不受支持,例如尝试在 RHEL 6 上从 Fedora 34 安装 RPM:

$ rpm --install https://dl.fedoraproject.org/.../Packages/t/tzdata-2021a-1.fc34.noarch.rpm
error: Failed dependencies:
        rpmlib(PayloadIsZstd) <= 5.4.18-1 is needed by tzdata-2021a-1.fc34.noarch

尽管这种依赖关系没有以rpm-libs可查询的方式显式公开--whatprovides,但我们可以推断出支持的压缩格式rpm-libs

### why do all compression formats have "z" in the name? It's the fashion.
$ rpm -q --requires rpm-libs | grep '^lib.*z'
libbz2.so.1()(64bit)
liblzma.so.5()(64bit)
liblzma.so.5(XZ_5.0)(64bit)
liblzma.so.5(XZ_5.1.2alpha)(64bit)
libz.so.1()(64bit)

跟踪这一点的另一种方法是 Fedora 等的功能更改:

相关内容