加载共享库时出错:libicuuc.so.59:无法打开共享对象文件:没有这样的文件或目录

加载共享库时出错:libicuuc.so.59:无法打开共享对象文件:没有这样的文件或目录

更新后pacman -Syuq

# pacman -Sc

pacman: error while loading shared libraries: libicuuc.so.59: cannot open shared object file: No such file or directory

# find / -name libicuuc.so.* 2>/dev/null
/usr/lib/libicuuc.so.60.1
/usr/lib/libicuuc.so.60

Pi 版本 1 中的 Arch Linux:

# uname -an
4.9.62-1-ARCH #1 SMP Fri Nov 17 13:42:55 UTC 2017 armv6l GNU/Linux

答案1

以前提出的解决方案与我无关或不起作用。由于某种原因,将icu软件包从 59.1-2 升级到 60.1-1 导致链接中断,并且许多程序(包括 pacman)失败并出现此错误。我这边没有打断吃豆人。

如果您的缓存中仍然有以前的包,您可以尝试这个,这对我有用:

  1. 找到包的缓存版本(例如,我的是/var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz)。
  2. 提取它:mkdir -p ~/pkg/tmp && tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
  3. 将库复制到您的 lib 文件夹:sudo cp ~/pkg/tmp/usr/lib/libicu*.59 /usr/lib/
  4. 继续更新:sudo pacman -Syu
  5. 您现在可以删除刚刚提取的文件。

答案2

您还可以使用 LD_LIBRARY_PATH 变量从不同位置加载 icu 库。通过这种方式,您可以避免对 /usr/lib 进行任何复制:

$ mkdir -p ~/pkg/tmp
$ tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
$ su
# LD_LIBRARY_PATH=`pwd`/pkg/tmp pacman -U /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz

答案3

如果您有一个可执行文件需要该特定版本的库(就像我的情况一样),那么有一个奥尔包对于该特定版本。

答案4

使用 pacman -Sc 解决了问题,然后使用 pacman -Syyu 不知道为什么它解决了问题。

相关内容