공유 라이브러리를 로드하는 중 오류가 발생했습니다. 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 버전 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로 업그레이드하면 연결이 끊어지고 이후 많은 프로그램(팩맨 포함)이 이 오류로 인해 실패했습니다. 내 편에서는 방해받는 팩맨이 없습니다.

캐시에 이전 패키지가 아직 남아 있는 경우 다음을 시도해 볼 수 있습니다. 이 방법은 저에게 효과적이었습니다.

  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

특정 버전의 라이브러리가 필요한 실행 파일이 있는 경우(내 경우에는 그랬습니다)아우르 패키지특정 버전에 대해.

답변4

pacman -Sc 다음에 pacman -Syyu를 사용하여 문제를 해결했습니다. 왜 문제가 해결되었는지 잘 모르겠습니다.

관련 정보