由于 readline 升级,Arch Linux 上的 gnupg 损坏 - 找不到 libreadline.so.6

l0b*_*0b0 6 arch-linux readline gnupg

我刚刚将 readline 升级到新的主要版本:

$ grep readline.*7 /var/log/pacman.log 
[2016-11-15 21:53] [ALPM] upgraded readline (6.3.008-4 -> 7.0-1)
Run Code Online (Sandbox Code Playgroud)

由于此 GNUPG 已损坏:

$ gpg 
gpg: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这也意味着我无法升级任何软件包。如何安全地修复我的安装?

到目前为止,我尝试降级readline 的方法是:

  • 包裹不在 /var/cache/pacman/pkg
  • 之前的 PKGBUILD构建失败,因为它不引导自身 - 它依赖于awkwhich 也缺失libreadline.so.6

小智 4

这已经报告给 Ar​​ch这里了

解决方法是运行

mkinitcpio -P
Run Code Online (Sandbox Code Playgroud)

升级完成后、重新启动之前。

如果您在重新运行 mkinitcpio 之前重新启动,那么您需要关闭 USB 盘等设备并从 chroot 运行 mkinitcpio。最简单的方法是使用arch-chroot,Arch 安装说明中所示。

我还没有机会在这种特殊情况下测试这种方法,但过去曾这样做过。