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などの機能の変更です。

関連情報