更新後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 不知道為什麼它解決了問題。