更新后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)失败并出现此错误。我这边没有打断吃豆人。
如果您的缓存中仍然有以前的包,您可以尝试这个,这对我有用:
- 找到包的缓存版本(例如,我的是
/var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz
)。 - 提取它:
mkdir -p ~/pkg/tmp && tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
- 将库复制到您的 lib 文件夹:
sudo cp ~/pkg/tmp/usr/lib/libicu*.59 /usr/lib/
- 继续更新:
sudo pacman -Syu
- 您现在可以删除刚刚提取的文件。
答案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 不知道为什么它解决了问题。