アップデート後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 の Arch Linux バージョン 1:
# 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 を含む) がこのエラーで失敗しました。私の側では、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
- libs を 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
特定のバージョンのライブラリを必要とする実行ファイルがある場合(私の場合もそうでした)、aur パッケージその特定のバージョン用です。
答え4
pacman -Sc に続いて pacman -Syyu を実行することで問題は解決しました。なぜ問題が解決したのかはわかりません。