apt도 중단되는 손상된 libstdc++6을 수정하는 방법

apt도 중단되는 손상된 libstdc++6을 수정하는 방법

gcc예전에 수동 업데이트로 뭔가를 망친 적이 있는 것 같은데 , 14.04에서 16.04로 업그레이드한 오늘까지는 문제가 되지 않았습니다. 즉, 시스템은 libstdc++6버전이 괜찮다고 생각하는 것처럼 보이지만 apt(그리고 다른 많은 프로그램은) 그렇지 않다고 불평합니다(공유 라이브러리가 실제로 잘못된 버전에 있기 때문입니다).

sudo apt-get install --fix-broken --fix-missing
apt-get: relocation error: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

시스템이 그래픽 모드를 시작하지도 않고, 위의 출력은 비그래픽 콘솔( 을 사용하여 Ctrl-Alt-F6)을 사용하여 얻은 것이며, apt그 자체는 전혀 사용할 수 없기 때문에 재설치 같은 것을 그냥 할 수는 없습니다.

패키지 관리에 사용하는 프로그램 자체가 영향을 받아 사용할 수 없는 경우 패키지를 수정하고 다시 설치하려면 어떻게 해야 합니까?

답변1

처음에는 수동으로 복사하여 그래픽 로그인 셸을 얻을 수 있었습니다.libstdc++.so.6.0.21Live USB 스틱에서 해당 위치로 이동하고 에서 해당 위치에 대한 링크를 생성합니다 libstdc++.so.6. 이 버전은 Ubuntu 16.04의 기본값인 것 같고 오류 메시지에 언급된 "21"("버전 GLIBCXX_3.4.21")도 포함하고 있기 때문에 정확한 버전을 사용했습니다.

apt이것이 그래픽 스택을 만족시키는 것처럼 보였지만 libstdc++6에 의존하는 다른 프로그램 에서도 동일한 오류가 남아 있었습니다 . 몇 번 시도한 후에 dpkg수동으로 설치(제거)하는 방법을 사용하여 다음 단계를 통해 모든 문제를 해결할 수 있었습니다 .

  • 16.04에 적합한 버전의 deb 파일을 다운로드하세요.

    wget http://mirrors.kernel.org/ubuntu/pool/main/a/apt/apt_1.2.10ubuntu1_amd64.deb http://mirrors.kernel.org/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb
    
  • 올바른 libstdc++6 설치를 차단하는 특정 버전을 제거합니다.

    sudo dpkg --force-depends -r libstdc++6:i386
    
  • 그런 다음 파일에서 "양호한" 버전을 설치합니다.

    sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb apt_1.2.10ubuntu1_amd64.deb
    
  • 마지막으로, 업데이트하고 시험해 보는 동안 내가 남긴 혼란을 해결하십시오.

    sudo apt-get install -f
    

관련 정보