rpm包都有个头的,里边会记录压缩格式、cpio大小等,我今天发现很多包读取到的大小都是0,这导致rpm2cpio命令返回失败码,有很多包有这个问题。
比如
https://mirrors.163.com/openeuler/openEuler-22.03-LTS-SP2/update/source/Packages/infinispan-8.2.4-13.oe2203sp2.src.rpm
[lichaoran@LAPTOP-6KLLVI0M test]$ rpm2cpio …/infinispan-8.2.4-13.oe2203sp2.src.rpm |cpio -idum
17494 blocks
[lichaoran@LAPTOP-6KLLVI0M test]$ ls
CVE-2016-0750.patch CVE-2019-10174.patch infinispan-8.2.4.Final.tar.gz
CVE-2017-15089-1.patch CVE-2019-10174-pre.patch infinispan.spec
CVE-2017-15089-2.patch implement-abstract-functions-extended-from-class-Directory.patch lucene-6.patch
我这里执行了后,是正常,可以确认一下下载的包是否完整
能解压出来不代表没问题。
我要的是命令返回值。你知道在脚本中调用命令,返回值有多重要吗?
rpm2cpio …/infinispan-8.2.4-13.oe2203sp2.src.rpm >cpio
它返回 1
很多集成化脚本执行系统命令,返回错误会报异常。
我首先遇到的是osc(obs的命令行工具)中有使用相关代码,导致流程中断。