共有ライブラリのロード中にエラーが発生しました: 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 の 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 は中断されませんでした。

以前のパッケージがまだキャッシュ内に残っている場合は、これを試すことができます。私の場合はこれでうまくいきました。

  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. libs を 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

特定のバージョンのライブラリを必要とする実行ファイルがある場合(私の場合もそうでした)、aur パッケージその特定のバージョン用です。

答え4

pacman -Sc に続いて pacman -Syyu を実行することで問題は解決しました。なぜ問題が解決したのかはわかりません。

関連情報