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 등의 기능 변경입니다.

관련 정보