我在 Centos 6.6 上使用 rpm 时遇到了一个奇怪的问题。
我尝试安装 rpm/srpm 并收到此消息:
rpm -v --checksig glibc-2.12-1.149.el6.src.rpm
glibc-2.12-1.149.el6.src.rpm:
Entête V3 RSA/SHA1 Signature, key ID c105b9de: BAD
Header SHA1 digest: BAD
V3 RSA/SHA1 Signature, key ID c105b9de: BAD
MD5 digest: BAD
从另一台具有相同操作系统版本的服务器:
rpm -v --checksig glibc-2.12-1.149.el6.src.rpm
glibc-2.12-1.149.el6.src.rpm:
Entête V3 RSA/SHA1 Signature, key ID c105b9de: OK
Header SHA1 digest: OK (e9db7a50918ba3d42cbd7da1e8dc4fa6dac7949f)
V3 RSA/SHA1 Signature, key ID c105b9de: OK
MD5 digest: OK (bf01b4a34aafa0fbc2d28d741f6546aa)
有什么想法吗?有人遇到问题,我可以备份/恢复到服务器吗?
感谢您的帮助。
答案1
因此,如果您 yum update 只安装了其中一个软件包,那么您最终会得到损坏的 YUM 和 RPM。尝试运行 YUM 和 RPM 命令时,您可能会看到类似以下错误消息:错误:rpmts_HdrFromFdno:Header V3 RSA/SHA1 签名,密钥 ID xxx BAD 错误:rpmdbNextIterator:跳过 h# 1784 Header V3 RSA/SHA1 签名,密钥 ID xxx BAD 大多数情况下,您会安装 nss-softokn-3.14.3-19,但不会安装 nss-softokn-freebl-3.14.3-19
要解决此问题,您必须:
1.手动下载nss-softokn-freebl-3.14.3-19 yumdownloader nss-softokn-freebl 或 wget RPM
64 位服务器/x86_64 运行
wget ftp://195.220.108.108/linux/centos/6.6/updates/x86_64/Packages/nss-softokn-freebl-3.14.3-19.el6_6.x86_64.rpm
32 位服务器/i686 运行
wget ftp://195.220.108.108/linux/centos/6.6/updates/i386/Packages/nss-softokn-freebl-3.14.3-19.el6_6.i686.rpm
2. 提取 RPM
64 位服务器/x86_64 运行
rpm2cpio nss-softokn-freebl-3.14.3-19.el6_6.x86_64.rpm | cpio -idmv
32 位服务器/i686 运行
rpm2cpio nss-softokn-freebl-3.14.3-19.el6_6.i686.rpm | cpio -idmv
3. 将 .libfreeblpriv3.* 复制到正确位置
64 位服务器/x86_64 运行
cp ./lib64/libfreeblpriv3.* /lib64
32 位服务器/i686 运行
cp ./lib/libfreeblpriv3.* /lib
4. 重新运行 Yum Update 以更新 nss-softokn-freebl 并修复 YUM 和 RPM
yum 更新 如果您仍然有问题,您可能需要为 64 位服务器重新安装 yum,如下所示,32 位服务器只需找到 32 位版本的 rpm!但大多数服务器不需要这个:
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-3.2.29-60.el6.centos.noarch.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/centos-release-6-6.el6.centos.12.2.x86_64.rpm
rpm -ivh --nodeps yum-3.2.29-60.el6.centos.noarch.rpm
rpm -ivh yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm
rpm -ivh centos-release-6-6.el6.centos.12.2.x86_64.rpm
在尝试解决问题时,我还遇到了一些关于如何恢复损坏的 rpmdb 的问题,有两种方法:
首先,从相同的、完好的服务器或备份中复制一份 /var/lib/rpm 文件夹的正确副本 – 您有备份吗?
在良好的服务器上或从备份中:
tar -cf rpmbackup.tar /var/lib/rpm
然后将 tar 发送到坏服务器
在损坏的服务器上:
cd /var/lib
mv /var/lib/rpm /var/lib/rpm.bak
tar -xf /location/to/rpmbackup.tar
那你就可以出发了!
第二种方法是通过检查 rpm 安装日志重新安装所有曾经安装过的 rpm。请参阅下面的注释