私は近年、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などの機能の変更です。