今天研发在一台centos8的机器上安装git的时候发现一直报错:
Running transaction check error: /var/cache/dnf/AppStream-aa6bef5bb60fb4eb/packages/git-core-2.43.0-1.el8.x86_64.rpm: signature hdr data: BAD, no. of bytes(60080) out of range The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executing 'yum clean packages'. Error: error reading package header: '/var/cache/dnf/AppStream-aa6bef5bb60fb4eb/packages/git-core-2.43.0-1.el8.x86_64.rpm'
我一看是CentOS Linux release 8.2.2004 (Core)的系统,估计又得折腾了,因为官方老早就没维护了,一顿操作猛如虎,结果又是一下午,先是根据报错寻找解决方案:
1、yum clean packages 2、yum clean all 3、yum makecache 4、--nogpgcheck 5、更新rpm:yum update rpm/dnf update rpm
完事后发现均不行,后来慢慢找啊找啊找啊
It is fixed in version rpm-4.14.3-12 and above, but because of the bug, a new version from the repo cannot be installed. You can manually download and install an earlier version like rpm-4.14.3-26.
说明这个bug在4.14.3才被修复,出现这个错误提示就是因为rpm包的版本太低导致的,问题是使用yum或者dnf安装的时候是要用到原始的rpm的,所以这里升级rpm自己也失败,于是开始按照大佬的步骤就行安装:
[root@bj-ali-data-rcs-21-1 tools]# rpm –version
RPM version 4.14.2
wget https://mirror.ihost.md/rockylinux/8/devel/$HOSTTYPE/os/Packages/r/rpm-4.14.3-26.el8.$HOSTTYPE.rpm wget https://mirror.ihost.md/rockylinux/8/devel/$HOSTTYPE/os/Packages/r/rpm-libs-4.14.3-26.el8.$HOSTTYPE.rpm 国内的机器下载会报错403,想办法去别的地方下载再拷贝到本机: wget https://mirror.ihost.md/rockylinux/8/devel/x86_64/os/Packages/r/rpm-4.14.3-26.el8.x86_64.rpm wget https://mirror.ihost.md/rockylinux/8/devel/x86_64/os/Packages/r/rpm-libs-4.14.3-26.el8.x86_64.rpm
进行安装:
rpm2cpio rpm-4.14.3-26.el8.x86_64.rpm | cpio -idmv -D / -u rpm2cpio rpm-libs-4.14.3-26.el8.x86_64.rpm | cpio -idmv -D / -u dnf upgrade rpm rpm-libs -y
[root@bj-ali-data-rcs-21-1 ~]# rpm –version
RPM version 4.14.3
然后就可以正常安装git了!!!
总结:遇到问题总会解决,没有思路的时候就往外搜,看英文。
参考链接:https://stackoverflow.com/questions/77365313/signature-hdr-data-bad-no-of-bytes9168-out-of-range
666