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

fru*_*ian 15 pacman arch-arm

更新后pacman -Syuq

# pacman -Sc

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

# find / -name libicuuc.so.* 2>/dev/null
/usr/lib/libicuuc.so.60.1
/usr/lib/libicuuc.so.60
Run Code Online (Sandbox Code Playgroud)

Pi 版本 1 中的 Arch Linux:

# uname -an
4.9.62-1-ARCH #1 SMP Fri Nov 17 13:42:55 UTC 2017 armv6l GNU/Linux
Run Code Online (Sandbox Code Playgroud)

Leg*_*ris 27

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

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

  1. 找到包的缓存版本(例如,我的 was /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. 您现在可以删除刚刚提取的文件。

  • 谢谢,这对我有用。但是我应该如何安全地删除复制的 libicu*.59 文件?`rm /usr/lib/libicu*.59` ? (3认同)

fru*_*ian 1

我研究了这个问题并发现了有关/var/log/pacman.log. 我看了日志,发现问题是:

...
[2017-11-28 04:34] [ALPM] upgraded libmariadbclient (10.1.28-1 -> 10.1.29-1)
[2017-11-28 04:34] [ALPM] transaction interrupted
Run Code Online (Sandbox Code Playgroud)

更新被中断,因此出现了链接问题。

然后我从这里下载了固件。我提取了丢失的库:

$ gunzip ArchLinuxARM-rpi-latest.tar.gz
$ tar -tf ArchLinuxARM-rpi-latest.tar |grep libicuuc.so.59
./usr/lib/libicuuc.so.59.1
./usr/lib/libicuuc.so.59
$ tar -xf ArchLinuxARM-rpi-latest.tar ./usr/lib/libicuuc.so.59.1
$ tar -xf ArchLinuxARM-rpi-latest.tar ./usr/lib/libicuuc.so.59
Run Code Online (Sandbox Code Playgroud)

libicuuc.so.59是一个符号链接libicuuc.so.59.1,所以我转移libicuuc.so.59.1到了/usr/lib/libicuuc.so.59

运行pacman我得到了丢失的错误libicudata.so.59。我将丢失的库提取到/usr/libpacman正在工作:)。

然后我更新了系统并pacman -Syuq检查了ldd /usr/bin/pacman所有库是否都存在。我移走了 v59 库/usr/lib并检查它是否pacman正常工作。

祈祷重启...成功!!!

pacman -Sc然后微笑着上床睡觉:)