문제를 해결할 수 없습니다. 깨진 패키지가 있습니다.


216

10.04에서 12.04로 업그레이드 한 후 다른 패키지를 설치하려고합니다. 예를 들어 ia32-libs 및 skype (4.0)입니다.

이들을 설치하려고 할 때 '문제를 해결할 수 없습니다. 패키지가 손상되었습니다.'라는 오류 메시지가 나타납니다.

명령 출력 :

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

이것을 실행 한 후 :

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

3
실제로 시도중인 명령 (예 :) sudo apt-get install ia32-libs과 해당 명령의 출력 을 보여 주면 도움이 될 수 있습니다 . 또한 sudo apt-get dist-upgrade사용 가능한 업데이트가 있습니까?
thomasrutter

3
귀하의 질문에 어떤 문제가 있는지 잘 모르겠습니다. 실제 오류나 제목에 설명 된 오류가 표시되지 않습니다.
Braiam


답변:


237

이 특정 오류 메시지는 패키지를 보유했음을 나타내지 만 다른 문제를 나타낼 수도 있습니다.

다음을 사용하여 실제 보류 패키지 목록을 얻을 수 있습니다 .

dpkg --get-selections | grep hold

관련이 없거나 관련성이 없다면 다른 것일 수 있습니다. 오류 메시지를 제외하고 해당 명령의 전체 출력에 다른 단서가있을 수 있으므로 오류 메시지가 표시 될 때 시도한 명령의 출력을주의 깊게 확인하십시오.

다른 문제 해결 방법은 apt-get 대신 aptitude를 사용하여 패키지를 설치하는 것입니다.

sudo aptitude install <packagename>

적성은 쉽게 포기하지 않으며 다른 패키지를 수정해야 할 수도있는 솔루션을 찾으려고 시도합니다. 문제에 대한 자세한 설명과 문제 해결 옵션이 제공 될 수 있습니다.

요청을 충족하기 위해 많은 수의 패키지를 제거하거나 다운 그레이드하기에 적의가 종종 있습니다.이 경우 -f우선 순위 를 변경하여 다시 시도 하면 요청한 모든 변경 사항을 의미하지 않더라도 더 적은 수의 패키지를 제거 / 다운 그레이드하는 솔루션을 만들 수 있습니다. 계속할 수 있습니다 :

sudo aptitude -f install <packagename>

6
패키지를 보류 해제하는 방법에 대한 아이디어가 있습니까? :-)
Eugene van der Merwe

6
그것은 별도의 질문 입니다.
thomasrutter

59
힌트는 apt-get보다 나에게 더 도움이되었습니다.
szx

9
한 가지주의 할 점은 적성이 시스템에 더 많은 피해를 입히는 것을 더 쉽게 만들 수 있다는 것입니다. 예를 들어, apt-get이 충돌하는 종속성으로 인해 무언가를 설치하지 못하면 포기합니다. 그러나 적성은 계속 제공 할 수도 있지만 이러한 충돌을 충족시키기 위해 패키지를 다운 그레이드하기 위해 다른 패키지를 모두 제거해야합니다. 당신은 단순히 그것이 제안하는 것을 알고 좋은 아이디어 일 경우에만 진행해야합니다.
thomasrutter

4
"보류 중"패키지는 메시지와 관련이 없으며 설치, 업그레이드, 다운 그레이드 또는 제거하지 않은 상태로 패키지를 누르고 있으면 충돌을 피할 수 있습니다.
Braiam

33

그것은 나에게도 일어났다. 내가 한 모든 sudo apt-get update것은 내 문제를 해결했습니다. 행운을 빕니다.


9

누락 된 종속성과 관련하여 비슷한 시나리오가 발생했습니다. 내 경우에는 우분투 saucy salamander 13.10에 curl을 설치하려고했습니다 ...

오류는 의존성에 curl3 라이브러리의 이전 버전이 필요하다고 명시했습니다.

적성을 사용하여 curl을 설치하여 이전 버전으로 성능을 저하시킬 수있었습니다.

누락 된 종속성과 그 이유 (이전 버전의 라이브러리 파일이 필요함)를 언급했을 때 응답 방법에 대한 몇 가지 옵션을 제공했습니다 ... y// n/q

Y설치를 중단하고 N다른 옵션 을 찾은 다음 Q단순히 종료하고 더 이상 아무것도하지 않아서 손상된 패키지가 남습니다.

을 선택 N했는데 라이브러리 파일을 이전 버전으로 다운 그레이드하는 옵션이 제공되었습니다. 그래서 그것이 내가 한 일이며 더 이상 오류없이 curl이 설치를 마쳤습니다.

  • 설치 후 라이브러리 파일을 다시 업그레이드하는 것을 볼 수 있지만 지금까지는 좋습니다.

9

14.04를 새로 설치했을 때 비슷한 시나리오가 있었고에 파일이 나열 dpkg --get-selections | grep hold되지 않았으며 기쁨도 없었습니다 sudo apt-get update.

무엇을 했던 나를 위해 그것을 해결하는 간단한이었다

sudo apt-get autoremove

실패한 패키지를 다시 설치하려고 시도했을 때 정상적으로 작동했습니다. 예이!


4

같은 문제가 있었지만 다른 답변 ( dpkg --get-selections | grep hold) 에서 해당 패키지 확인 명령을 실행하고

tomcat7                                         deinstall
tomcat7-common                                  install

그래서 " apt-get remove tomcat7-common"를 사용했습니다

그런 다음 Tomcat 6을 설치할 수 있습니다 (Tomcat 7을 제거하고 Tomcat 6을 설치했습니다).


"보류 중"패키지는 메시지와 관련이 없으며, 설치, 업그레이드, 다운 그레이드 또는 제거하지 않고 패키지를 누르고 있으면 충돌이 방지됩니다.
Braiam

플래그 제거를 추가합니다 : apt-get remove --purge packet
Sergio Abreu

4

you have held broken packages오류 를 해결하는 빠르고 쉬운 방법 입니다.

  • sources.list 파일을 열고 /etc/apt/sources.list현재 사용중인 Ubuntu 릴리스와 다른 Ubuntu 릴리스에 대한 소프트웨어 소스가 없는지 확인하십시오. sources.list에서 잘못된 릴리스 행을 찾으면으로 sources.list 파일을 열고 문자 sudoedit /etc/apt/sources.list로 시작하여 sources.list에서 잘못된 행을 주석 처리 #하고 sources.list 파일을 저장 한 후 실행 sudo apt update하여 사용 가능한 소프트웨어 패키지.

  • 시냅틱 패키지 관리자에서 깨진 패키지 수정 옵션을 선택하십시오 . 다음 명령을 실행하여 Synaptic을 설치하십시오.

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    시냅틱을 열고 시냅틱에서 편집 -> 깨진 패키지 수정 을 선택한 다음 편집 -> 깨진 패키지 수정을 두 번 반복 하십시오 .

    왼쪽 창의 시냅틱에서 아래 스크린 샷에서 마우스 커서로 표시된 사용자 지정 필터 단추를 클릭하십시오 . 왼쪽 상단의 목록에서 Broken을 선택하십시오 . 가운데 창에는 여전히 복구해야 할 손상된 패키지가 표시됩니다.

    시냅틱에서 깨진 패키지 표시

    깨진 패키지를 한 번에 하나씩 선택하십시오. 손상된 패키지를 선택한 다음 터미널을 열고를 실행하십시오 . 이 명령의 결과는 손상된 패키지가 기본 Ubuntu 저장소 또는 다른 소스에서 설치되었는지 알려줍니다. 손상된 패키지가 다른 소스에서 설치된 경우 해당 패키지를 소프트웨어 소스와 함께 제거하고 기본 우분투 리포지토리와 동일한 패키지의 다른 버전으로 교체 할 수 있습니다. 일반적으로 이는 해당 패키지를 이전 버전으로 다운 그레이드하여 손상된 패키지를 수정하는 것을 의미합니다.apt policy <package-name>

  • 이 오류 메시지가 표시되면

    Try 'apt-get -f install' with no packages (or specify a solution)  
    

    다음 명령을 실행하십시오.

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • 손상된 패키지를 수동으로 제거하십시오.

    1. 패키지 찾기 /var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. 패키지 폴더를 다른 위치로 이동하십시오.

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. 다음 명령을 실행하십시오.

      sudo dpkg --remove --force-remove-reinstreq <package>  
      

이러한 방법이 모두 작동하지 않으면 손상된 패키지가 운영 체제에 깊숙이 내장 된 것으로 인해 발생할 수 있으며 이러한 방법 중 어느 것도 영향을 미치지 않습니다. 이 깊이 포함 된 "뭔가"를 찾을 수있는 첫 번째 확실한 곳은의 소프트웨어 소스입니다 /etc/apt/sources.list. sources.list 파일을 검사하여 패키지 오류가 발생할 수있는 비표준 행이 포함되어 있는지 확인하십시오. 표준 Ubuntu sources.list 파일은 이 답변 의 sources.list 파일과 유사합니다 .

sources.list에서 의심스러운 줄을 제거하는 올바른 방법은 앞에 #문자 를 붙여 주석 처리하는 것 입니다. 그런 다음 실행 sudo apt update하여 사용 가능한 소프트웨어 목록을 새로 고칩니다.


0

내 시스템이 업데이트되지 않았기 때문에 위의 어느 것도 작동하지 않았습니다. 내가 했어

Home Key > Software Updater > Install

내 시스템을 업데이트했습니다. 나중에 패키지를 정상적으로 설치할 수 apt있습니다.


0

설치 xsane실패 후 다시 설치 하는 데 동일한 문제가 발생 했습니다 ppa. yochannah와 마찬가지로 "에 나열된 파일 dpkg --get-selections | grep hold도없고 그 이후에도 기쁨이 없습니다 sudo apt-get update".

apt-get나에게 준 힌트 는

xsane : Depends: libsane (>= 1.0.24) but it is not going to be installed

yochannah의 답변으로 인해 이전에 설치된 패키지를 제거해야한다는 느낌이 들었습니다. 그리고 그렇게, 내가 수동으로 모든 관련 패키지를 제거해야했다 sane다른 사람의 사이에, xsane-common그리고 libsane여전히 같은 설치, ppa버전.

따라서 이전에 설치하고 정리 한 것을 조심하십시오!

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