readline 업그레이드 이후 Arch Linux의 gnupg가 손상됨 - libreadline.so.6을 찾을 수 없음

readline 업그레이드 이후 Arch Linux의 gnupg가 손상됨 - libreadline.so.6을 찾을 수 없음

방금 readline을 새로운 주요 버전으로 업그레이드했습니다.

$ grep readline.*7 /var/log/pacman.log 
[2016-11-15 21:53] [ALPM] upgraded readline (6.3.008-4 -> 7.0-1)

이 GNUPG가 손상되었기 때문에:

$ gpg 
gpg: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory

이는 또한 패키지를 업그레이드할 수 없음을 의미합니다. 내가 어떻게 할안전하게설치를 복구하시겠습니까?

내가 지금까지 시도한 것다운그레이드읽는 줄:

  • 패키지가 거기에 없습니다/var/cache/pacman/pkg
  • 다음에서 빌드이전PKGBUILD자체적으로 부팅되지 않기 때문에 실패합니다. 의존하는 장치 awk도 누락되어 있습니다 libreadline.so.6.

답변1

이 내용이 아치에게 보고되었습니다.여기.

해결책은 실행하는 것입니다.

mkinitcpio -P

업그레이드가 완료된 후 다시 시작하기 전입니다.

mkinitcpio를 다시 실행하기 전에 재부팅하는 경우 USB 드라이브와 같은 장치를 끄고 chroot에서 mkinitcpio를 실행해야 합니다. 가장 간단한 것은 사용하는 것입니다아치형 루트에서와 같이아치 설치 지침.

저는 이 특별한 상황에서 이 접근 방식을 테스트할 기회가 없었지만 과거에는 테스트해 본 적이 있습니다.

답변2

이전 버전을 수동으로 확인하고 설치하여 문제를 해결했습니다.

  1. 다음에서 이전 버전을 다운로드하세요.아치 리눅스 아카이브
  2. 패키지 및 서명 파일을 다음 위치에 복사합니다.다른기계로 서명하고 거기에서 서명을 확인하십시오.
  3. 짐 등에서 꺼내다:sudo tar -xvpf readline-6.3.008-4-x86_64.pkg.tar.xz -C / --exclude .PKGINFO --exclude .INSTALL

경고: 다른 패키지에는 사전 설치 또는 사후 설치 스크립트가 포함될 수 있습니다. 이것은 그렇지 않지만 경고를 받았다고 생각하십시오!

답변3

libreadline.so.7대부분의 유틸리티가 실행 후에도 계속 작동할 수 있을 만큼 이전 버전과 호환되는 것 같습니다 .

sudo ln -s /usr/lib/libreadline.so.7 /usr/lib/libreadline.so.6

그 후 경고가 표시되었지만 새 패키지가 확인되도록 /usr/bin/bash: Symbol rl_readline_state has different size in shared object, consider re-linking업데이트 pacman-key하고 업그레이드한 다음 .libgcryptpacman -S bashreadline 7.0

팩맨의 Catch-22 스타일 불을 끈 후 다음 명령을 사용하여 정리하세요.

sudo rm /usr/lib/libreadline.so.6

답변4

@chbrown이 제안한 대로 했습니다.

sudo ln -s /usr/lib/libreadline.so.7 /usr/lib/libreadline.so.6

(링크 경고도 있습니다)

그런 다음 ca-certificates-utils에 대한 새로운 오류가 발생하여 다음 단계를 따라야 했습니다.https://bugs.archlinux.org/task/53217#comment155971

pacman -Sy --force  ca-certificates-utils

그러면 다음을 수행할 수 있습니다.

pacman -Syu

모든 업그레이드가 원활하게 진행되었으며 libreadline/libreadline 링크 오류가 수정되었습니다.

관련 정보