공유 라이브러리를로드하는 중 오류 : libicuuc.so.59 : 공유 객체 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리가 없습니다


11

로 업데이트 후 pacman -Syuq:

# 팩맨 -Sc

pacman : 공유 라이브러리를로드하는 동안 오류가 발생했습니다 : libicuuc.so.59 : 공유 객체 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리가 없습니다

# find / -name libicuuc.so.* 2>/dev/null
/usr/lib/libicuuc.so.60.1
/usr/lib/libicuuc.so.60

Pi 버전 1의 아치 리눅스 :

# uname -an
4.9.62-1-ARCH #1 SMP Fri Nov 17 13:42:55 UTC 2017 armv6l GNU/Linux

오늘도 같은 문제가 나타났습니다. 나를 위해 libicuuc.so.59. 난 더 이상 부팅 및 작동하지 않는 많은 프로그램에 명령 줄을 통과해야
zakrapovic

또한 libicui18n.so.59가 누락되었을 가능성이 있음
zakrapovic

팩맨 -SC는 다음과 사실 내 문제를 해결 팩맨 -Syuu
zakrapovic

답변:


20

이전에 제안 된 솔루션은 관련이 없거나 나에게 적합하지 않았습니다. 어떤 이유로 icu패키지를 59.1-2에서 60.1-1로 업그레이드하면 연결이 끊어지고 많은 프로그램 (pacman 포함)이이 오류로 실패했습니다. 내 곁에 중단 된 팩맨이 없습니다.

여전히 캐시에 이전 패키지가 있다면 이것을 시도해 볼 수 있습니다.

  1. 캐시 된 버전의 패키지를 찾습니다 (예 : mine 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를 lib 폴더로 복사하십시오. sudo cp ~/pkg/tmp/usr/lib/libicu*.59 /usr/lib/
  4. 업데이트 진행 : sudo pacman -Syyu
  5. 이제 방금 추출한 파일을 제거 할 수 있습니다.

2
고마워, 이것은 나를 위해 일했다. 그러나 복사 된 libicu * .59 파일을 어떻게 안전하게 제거해야합니까? rm /usr/lib/libicu*.59?
Skatox December

이것은 나를 위해 일했다. 감사합니다. 공감하십시오.
Vaughan Hilts

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

그것은이었다 LD_LIBRARY_PATH=`pwd`/pkg/tmp/usr/lib내 경우.
v_2e

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

업데이트가 중단되어 연결 문제가 발생했습니다.

그런 다음 여기 에서 펌웨어를 다운로드했습니다 . 누락 된 라이브러리를 추출했습니다.

$ 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

libicuuc.so.59에 대한 심볼릭 링크 libicuuc.so.59.1이므로로 이동 libicuuc.so.59.1했습니다 /usr/lib/libicuuc.so.59.

실행 pacmanlibicudata.so.59누락 된 오류가 발생했습니다 . 나는에 누락 된 라이브러리를 추출 /usr/lib하고 pacman:) 일하고 있었다.

그런 다음 시스템을 업데이트하고 모든 라이브러리가 pacman -Syuq있는지 확인했습니다 ldd /usr/bin/pacman. v59 라이브러리를 옮기고 작동하는지 /usr/lib확인 pacman했습니다.

손가락이 교차하여 재부팅 ... 성공적으로!

pacman -Sc 그리고 미소로 자러 간다. :)


1

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



0

시스템에 lib32-icu가 설치되어 있지 않습니다. pacman에서 lib32-icu를 설치하면 모든 문제가 해결됩니다.

sudo pacman -S lib32-icu

0

다음 링크의 도움으로이 문제를 해결했습니다. 여기

이 기사에 따르면 다운 그레이드는 좋지 않은 아이디어이며 아마도 누락 된 종속성을 사용하는 패키지를 다시 작성해야합니다. 다운 그레이드는 여러 패키지에 영향을 줄 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.