“다음 패키지는 보관되었습니다.”왜, 어떻게 해결합니까?


877

김프의 개발 버전에 대한 PPA 리포지토리를 추가했지만이 오류가 발생합니다.

$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
  gimp gimp-data libgegl-0.0-0 libgimp2.0

현재 가지고있는 버전 대신 최신 버전을 사용할 수 있도록 이유와 방법을 어떻게 해결할 수 있습니까?


17
엄밀히 말하면, 그것은 오류가 아니라 경고라고 말할 것입니다.
Kazark

답변:


903

에 따르면 debian-administration.org에 대한 기사 ,

설치 한 패키지 중 하나에서 종속성이 변경되어 업그레이드를 수행하기 위해 새 패키지를 설치해야한다면 "kept-back"으로 표시됩니다.

신중한 해결책 1 :

파블로의 대답 , 당신은 실행할 수 있습니다 sudo apt-get --with-new-pkgs upgrade, 그리고 그것은 유지 백 패키지를 설치합니다.

이렇게하면 보관 된 패키지를 "수동으로 설치"로 표시하지 않아도되므로 사용자 개입이 줄어 듭니다 (주석 참조).

파블로의 해결책이 당신을 위해 효과가 있다면, 그것을 찬성하십시오. 그렇지 않은 경우 무엇이 잘못되었는지 의견을 말하십시오.

신중한 해결책 2 :

신중한 해결책은 실행하는 것 sudo apt-get install <list of packages kept back>입니다. 대부분의 경우 이것은 유지 된 패키지가 성공적으로 업그레이드하는 데 필요한 것을 제공합니다.

적극적인 솔루션 :

보다 적극적인 솔루션을 실행 sudo apt-get dist-upgrade하는 것이 새로운 종속성을 강제로 설치합니다.

그러나 dist-upgrade 매우 위험 할 수 있습니다 . 업그레이드와 달리 복잡한 종속성 상황을 해결하기 위해 패키지를 제거 할 수 있습니다. 귀하와 달리 APT는 이러한 추가 및 제거가 혼란을 초래할 수 있는지 항상 알만큼 똑똑하지는 않습니다.

그래서 당신은 "주의 솔루션", 작동하지 않는 곳에서 자신을 찾을 경우 dist-upgrade 일 ...하지만 당신은 설치 및 제거하여 APT에 대해 좀 더 배우고 "손으로"종속성 문제를 해결 떨어져 아마 더 좋을 것 같아 사례별로 패키지.

자동차를 수리하는 것처럼 생각하십시오. 시간이 있고 렌치를 사용하면 편리하게 읽고 수리하여 안심할 수 있습니다. 운이 좋다면 사촌 dist-upgrade과 함께 차를 내릴 수 있고 그녀가 그녀의 물건을 알고 있기를 바랍니다.


180
이것은 허용되는 답변 요구 사항이므로 dist-upgrade아래의 많은 다른 답변이 지적했듯이 안정적인 시스템에서 사용하는 것에 대해 경고하려면 실제로 업데이트해야 합니다. 개인적으로 나는 승진해야 할 더 간단하고 안전한 답변이 있다고 생각합니다. apt-get install <pkgs 목록>
Cas

7
Cas, 안정적인 시스템에서 dist-upgrade를 실행하는 것이 위험 할 수 있다고 덧붙여 야합니까? 왜 정확히 위험한가요? (솔직히 모든 것을 잘 경향을 알 수 없습니다.)
마이클 크렌쇼에게

17
dist-upgrade를 좀 더 자세하게 설명 하는 Server Fault 응답 이 있습니다. 나는 사용자가 기대하는 것 / 원치 않는 것, 즉 OP 예에서 김프가 왜 보류되고 있는지 궁금해 할 수있는 전체 시스템을 업그레이드 할 수 있음을 명확히 할 가치가 있다고 생각합니다.
Cas

19
유의하시기 바랍니다 sudo apt-get dist-upgrade또한 수 있습니다 제거 패키지를. 따라서 실행시 변경 사항에 동의하기 전에 수행 할 변경 목록을 항상 검사하는 것이 가장 좋습니다 sudo apt-get dist-upgrade.
Eliah Kagan

6
@EliahKagan apt-get upgrade패키지를 제거 할 수 있습니까? 그렇지 않으면 버전 충돌이있을 때 항상 그렇게합니다. llvm3.6vs를 생각하십시오 llvm3.6v5( "v5"로 컴파일되어 있음 gcc 5). 이 둘 은 공존 할 수 없으며 둘 중 하나만 시스템에 보관할 수 있습니다. 예 dist-upgrade, 일부 패키지도 제거 할 수 있지만 그렇게하는 것만이 아닙니다 dist-upgrade. 특정 상황에서도 upgrade마찬가지입니다.
syntaxerror

500

명령 apt-get upgrade에서 메시지 를받을 때마다

The following packages have been kept back:

그런 다음 배포 업그레이드를 수행하지 않고 보관 된 패키지 중 하나 또는 전부를 업그레이드하려면 ( dist-upgrade정확히 기억하는 경우 수행하는 작업 ) 명령을 실행하는 것입니다.

apt-get install <list of packages kept back>

이렇게하면 유지 된 문제가 해결되고 다른 답변에서 설명한대로 추가 패키지 설치 등을 요청합니다.


3
패키지 가이 방법으로 유지되고 수동으로 apt-get upgrade <list of packages>다시 실행 apt-get upgrade하면 문제가있는 패키지를 더 이상 필요하지 않은 것으로 나열하고 apt autoremove제거하는 데 사용할 수있는 패키지를 apt-get upgrade나열합니다. 계속 ... 매우 이상합니다. 이견있는 사람?
cram2208

않습니다 apt-get install밥맛 종속 상황을 해결하기 위해 필요한 경우도 패키지를 제거하거나 별도의 실행해야 apt-get remove업그레이드 프로세스의 일부를 수행하는 명령을?
Michael Crenshaw

@ cram2208 예상되는 동작이라고 생각합니다. "자동으로 설치되고 [...] 더 이상 필요하지 않은"패키지는 이전 버전의 업그레이드 된 패키지이며 더 이상 필요하지 않습니다. apt autoremove그런 다음 사용하지 않는 종속성을 제거합니다.
Alex

3
업그레이드에 새 패키지를 설치해야하는 경우 패키지가 "유지됩니다". 먼저 다음 sudo apt-get --with-new-pkgs upgrade을 사용 하는 것이
좋습니다.

@ mac9416 그렇습니다.
jarno

174

apt-get dist-upgrade 안정적인 환경에 위험합니다

  1. 잘못된 source.list 설정으로 인해 우분투가 고장납니다.
  2. 전체 응용 프로그램을 원하지 않는 버전으로 업그레이드 할 수 있습니다.

유스 케이스 : 커널 업그레이드가 유지되었으므로 커널을 업그레이드하고 전체 배포를 업그레이드하고 싶지 않습니다.

보관 된 패키지를 처리하는 더 좋은 방법 :

sudo aptitude

패키지를 다시 보관 한 경우 목록 상단에 업그레이드 가능한 패키지가 표시됩니다.

  • 해당 목록에서 +를 누르십시오
  • g를 두 번 누르십시오
  • 요청하면 debconf에 응답
  • 계속하려면 Return 키를 누르십시오
  • Q를 누릅니다
  • 예를 누르십시오

보관 된 패키지가 설치되었습니다.


34
apt-get dist-upgrade에 리포지토리가 잘못된 경우에만 위험합니다 /etc/apt/sources.list*. 모든 패키지 를 dist-upgrade업그레이드 하지만 기본 리포지토리를 사용하는 것이 좋습니다. 보안 업데이트가 누락 될 수 있으므로 사용 하지 않으면 위험 할 수 있습니다. dist-upgrade
Flimm

6
apt-get dist-upgrade패키지를 제거 하고 추가 할 수 있지만 실제로 위험하지는 않습니다. 파일에 문제가있는 경우sources.list 모든 패키지 설치 명령으로 인해 심각한 손상 이 발생할 수 있습니다 ! 일반 apt-get upgrade명령은 활성화 된 소프트웨어 소스에서 모든 패키지를 설치합니다. dist-upgrade이런 식으로 고유하지 않습니다. 또한 버그 831768 이 수정되지 않은 릴리스에서는 aptitude적어도 amd64에서 모든 작업을 수행하는 것이 실행보다 훨씬 위험 합니다. apt-get dist-upgrade
Eliah Kagan

나를 위해 시냅틱을 열고 패키지를 강제로 업그레이드하는 것이 더 쉬웠습니다 (X가 실행되는 로컬 컴퓨터). 어떤 이유로 든 시냅스에서 묘사 한 곳에서는 전혀 나타나지 않는 것 같습니다.
djvs

3
또한sudo aptitude safe-upgrade
msanford

146

왜 시도하지 이 유닉스 SE의 대답 :

sudo apt-get --with-new-pkgs upgrade

새 패키지를 설치할 수 있습니다. 어떤 패키지가 설치 될지 알려주고 실제로 설치하기 전에 프롬프트를 표시합니다.

apt명령 ( 친화적 인 대안은 하는 apt-get이 옵션을 공유).

apt install <pkg>대신 사용하면 pkg가 "수동으로 설치됨"으로 표시됩니다 !! "자동 설치"로 다시 표시하려면 다음 apt-mark auto <pkg>명령을 사용 하십시오 (하위 명령 참조 showmanual). 이 답변에 대한 자세한 정보 .


20
패키지가 수동으로 설치된 것으로 표시되는 부작용이 없으므로 +1입니다.
ctrl-alt-delor

1
위의 내 의견을 읽은 사람에게 주목하십시오. 수동으로 설치된 것으로 표시하는 부작용이없는 것이 좋습니다. 나는이 답변을 좋아한다.
ctrl-alt-delor 9

1
예. apt-mark auto <pkg>패키지가 자동으로 설치되는 것으로 표시해야합니다 ( 여기서는 맨 페이지 ).
Pablo A

11
어떤 이유로 든 sudo apt-get --with-new-pkgs upgrade여전히 패키지를 "유지"로 표시합니다. 오류 메시지가 없습니다.
Franklin Yu

2
최신 데비안 9.6 서버 인스턴스의 경우 많은 문제가 발생하지 않는 가장 안전한 솔루션이었습니다. 준비 환경에 대한 다른 옵션을 운 좋게 테스트 한 파블로 (Pablo)에게 감사 드리며, 일반적인 패키지 관리를 위해보다 깔끔한 결과를 제공하는 --with-new-pkgs 덕분에 많은 서버를 보안 표준까지 관리 할 수있었습니다. 실제로,이 UNIX SE 답변은 상향 조정되어야합니다!
Julius

34

이 메시지가 나타나는 데는 일반적으로 두 가지 이유가 있습니다.

을 통해 프로그램을 업그레이드 sudo apt-get upgrade하면 패키지가 추가되거나 제거 될 경우 프로그램이 보류됩니다. 당신은 사용 sudo apt-get dist-upgrade후 추가 프로그램을 추가하거나 제거 할 수 제공 할 것이 경우에.

이것은 일반적이며 문제가되지 않습니다. 때때로 (특히 우분투 알파 기간 동안) dist-upgrade다른 많은 프로그램을 제거하도록 제안 할 것입니다.이 경우에는 취소하고 싶을 것입니다.

프로그램이 사용할 수없는 패키지 또는 버전에 의존하는 경우 프로그램이 보류됩니다. 패키지는 기본적으로 제거 가능하기 때문에 실제로는 아무것도 할 수 없지만이 상황에서는 기다릴 수 없습니다. 이는 패키지가 순서대로 저장소에 추가되거나 패키지 이름이 변경되거나 패키지가 가상 패키지 제공을 중지 할 때 발생할 수 있습니다.


5
보류 된 패키지에 설치할 수없는 종속성이 필요한지 또는 다른 패키지가 종속되어 있기 때문에 보류 중인지 여부를 판별하는 방법이 있습니까? 보류 된 패키지가 많이 있으며이 두 가지 경우 모두 시스템에 적용될 수 있다고 생각합니다.
Jake

감사합니다. 두 번째 이유는 저에게 문제였습니다. 심지어 apt-get dist-upgrade설치를 거부했습니다. 적절한 패키지를 검사 한 결과 사용할 수없는 패키지에 의존하는 것으로 나타났습니다. 기다려야 할 것 같아
jlh

23

시도해 볼 수도 있습니다 :

sudo aptitude safe-upgrade.

full-upgrade"패키지는 사용하지 않는 한 제거되지 않기 때문에"(원래 dist-upgrade) 보다 안전 합니다.

보낸 사람 man aptitude:

안전한 업그레이드

설치된 패키지를 최신 버전으로 업그레이드합니다. 설치된 패키지는 사용하지 않는 한 제거되지 않습니다. /.../ 현재 설치되지 않은 패키지는 --no-new-installs 명령 줄 옵션이 제공되지 않으면 종속성을 해결하기 위해 설치 될 수 있습니다.


21

이러한 패키지는 설치시 종속성 불일치가 발생하기 때문에 보류 될 가능성이 높습니다. 활성 개발중인 아카이브 (ppas)를 사용하거나 사용하는 미러가 완전히 업데이트되지 않았기 때문에 발생할 수 있습니다.

마지막 경우, 종속성이 해결되면 다음에 설치됩니다.

편집하다:

또 다른 가능성이 있습니다. 패키지를 보류하거나 고정한 경우 패키지가 보류 될 수 있습니다.


그가 apt-get upgrade 또는 apt-get dist-upgrade (대체로 적성에 상응하는)를 실행 한 것을 몰라도 그 가능성에 어떤 근거를두고 있습니까?
andol

이것은 지원 질문과 버그에서 가장 많이 발생하는 문제입니다
txwikinger

동의했다. apt_preferences를 기다려서 확인해야합니다. 이는 사용 가능한 패키지 종속성이 매우 빠르게 변경되는 개발 아카이브로 인해 종종 발생합니다. 그들이 정착하기를 기다리면 전혀 필요하지 않을 수도 있습니다 dist-upgrade. 그래도 계속하려면 dist-upgrade설치하기 전에 설치할 새 패키지와 제거 할 패키지를 확인하십시오.
Umang

이것은 dist-upgrade를 사용하여 "돌아온"메시지를 받기 때문에 내 경우입니다
Postadelmaga

이 문제가 적절한 환경 설정 (고정)으로 인한 엉망으로 인한 경우 보관 된 패키지를 다시 설치하면 도움이 apt-get install --reinstall <packages>됩니다.
tanius

9

이는 일반적으로 패키지가 종속성을 추가했기 때문에 업그레이드가 허가없이 패키지를 추가하기를 원하지 않기 때문입니다.

당신이 실행하는 경우 :

sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

그런 다음 새 버전을 새 종속성과 함께 설치해야합니다.


dist-upgrade의 약정 (위험)없이 특정 패키지 및 해당 종속성을 업그레이드합니다.
John Mee

8

이것은 나를 위해 일했다

sudo aptitude full-upgrade

심지어 aptitude upgrade나를 위해 일했다.
Bibhas

I`am 사용하여 Ubuntu 14.04내가없는 aptitude명령 줄을
아메드 hamdy

apt-get dist-upgrade나에게 같은 메시지를 주었지만 이것은 나를 위해 해결되었습니다. 다른 패키지의 업그레이드를 방해하는 패키지가있었습니다. 내가 설치 한 것이 필요하지 않았 aptitude full-upgrade으므로 다른 것을 업그레이드 할 수 있도록 제거하는 옵션을주었습니다.
f.ardelian

6

버전이 약간 다르면 적성이 패키지를 업그레이드 할 때 더 잘 작동한다는 것을 알았습니다. 나는 이런 상황을 겪었다.

me@compy:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

이로 인해 apt-get이 업데이트를 보류했지만 적절하게 업데이트되었습니다. 패키지를 업데이트해야하는지 여부를 결정하는 데 어떤 알고리즘이 사용되는지 잘 모르겠습니다. 나는이 두 가지 버전이 같고 다른 'qualifier'만 있다고 생각합니다. 그러나 어쨌든 apt-get은 업데이트하지 않지만 적성은 업데이트됩니다.


4

필자의 경우 보류 된 패키지는 Linux 헤더 및 커널과 관련된 패키지였습니다 . 알림 영역에 빨간색 느낌표가 있고 패키지를 업데이트 할 수없는 문제를 해결하려고 노력했습니다.

그것을 해결하기 위해 dist-upgrade 나 manual apt-get install xxx 를 사용할 필요가 없었습니다 .

내가 한 일과 도움이 된 일은 간단하고 깨끗했습니다 .

sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade

Grub 업데이트 및 구성을 수동으로 확인해야했습니다.

그런 다음 컴퓨터와 잠시 동안 작업 한 다음 커널 및 관련 "우분투 기본"섹션을 포함하여 표준 업데이트 대화 상자가 다시 나타났습니다. 문제없이 업데이트가 수행되었으며 더 이상 보류 된 패키지가 표시되지 않습니다.

또한 커널 업데이트를 포함한 * buntu 업데이트 는 최대 절전 모드에 민감 하다는 점을 명심해야합니다. 이 문제가 여러 번 발생했으며 컴퓨터를 다시 시작하고 위의 단계를 수행하면 항상 문제가 해결됩니다.

아마 이것으로 충분할까요?!

(여기에 설명 된 상황은 2015 년 12 월 말 내 Xubuntu 15.10과 관련이 있습니다)


3

새 커널이 출시 될 때이 문제가 발생했습니다. (아마도 불안정한 업데이트가 활성화되어 있기 때문일 수 있습니다.) 설치를 수행하는 가장 간단한 방법은 Ubuntu의 그래픽 설치 프로그램 ( update-manager)을 사용하는 것입니다.


2

시냅틱을 사용 하여이 문제가 발생하여 중단 된 것처럼 보 였으며이 문제를 해결하고 다시 부팅하고 다시 시도했습니다.

그런 다음 패키지의 일부로 설치 후 지침과 함께 유익한 메시지를 발견했습니다.

메시지를 읽은 후 " details "를 누른 다음 ' q '를 종료해야했고 정상적으로 진행되었습니다.


2

유지 된 패키지를 다시 설치하는 올바른 방법 인 것 같습니다.

apt-get install --reinstall libjpeg-progs

적어도 이것은 libjpeg-progs우분투 14.04에서 16.04로 업그레이드 한 후 멈추었을 때 효과적이었습니다. 예를 들어 다른 유지 응용 프로그램과 동일한 작업을 수행 할 수 있다고 확신합니다 gimp.

출처 : https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post13476183


1
너도없이 할 수 --reinstall있다.
jarno

재미있는 것은 libjpeg-turbo-progs 패키지를 제거한다는 것입니다.
jarno

1

실제로 필요한 스위치는 dselect-upgrade관련된 특정 패키지 세트에 대한 종속성을 설치 / 제거하는 것입니다.


1

나는 모든 게시물을 읽었으며 많은 흥미로운 설명이 있음을 발견했습니다. 나는 그들 모두를 시도했지만 완전히 결과가 없었습니다. 업그레이드 할 수없는 mysql-utilities에 문제가 있습니다. 시스템에서 업데이트를 제안했습니다. 그래서 몇 가지 단계를 보여 드리고자합니다. 물론, 나는 앞서 언급 한 모든 게시물을 잠시 후에 반복 할 것입니다. 여기 내 실수가 있습니다. 그렇습니다. 이미 존재하는 게시물로 찾았지만 다음에 어떻게해야합니까? 여기에 이미지 설명을 입력하십시오

다음 단계는

sudo apt-get --purge remove mysql-utilities

아래 이미지에서 볼 수있는 결과. 패키지를 제거하고 명령으로 이것을 확인하십시오.

sudo apt-get -f install

결과-좋아! 나중에이 새 버전의 패키지를 올바르게 설치했습니다. 여기에 이미지 설명을 입력하십시오

이런 식으로, 다른 패키지를 사용하면 동일한 단계를 수행 할 수 있기 때문에 더 많은 새로운 사람들을 도울 수 있다고 생각합니다.

한 번, 다른 장소에서 다른 게시물을 반복했을 때 죄송합니다.


5
Google에서 검색 할 수없고 일부 사람들이 읽을 수 없도록하기 위해 터미널 텍스트에 스크린 샷을 사용하지 마십시오. 대신 터미널 텍스트를 답변에 붙여넣고 해당 텍스트를 선택한 {}다음 편집기 에서 단추를 눌러 형식을 올바르게 지정하십시오.
차이 티 렉스

@ ChaiT.Rex 의견에 감사드립니다, 나는 미래에 대한 견해로 생각합니다.
Vasyl Lyashkevych

1

우분투 18.04 비아 새롭고 간소화 된 구문 제공 apt대신에 사용될 수있다 apt-get.

sudo apt full-upgrade

sudo apt upgradesources.list (5)를 통해 구성된 소스에서 시스템에 현재 설치된 모든 패키지의 사용 가능한 업그레이드를 설치하는 데 사용됩니다. 종속성을 충족시키기 위해 필요한 경우 새 패키지가 설치되지만 기존 패키지는 제거되지 않습니다. 패키지 업그레이드시 설치된 패키지를 제거해야하는 경우이 패키지의 업그레이드가 수행되지 않습니다.

sudo apt full-upgrade 업그레이드 기능을 수행하지만 시스템 전체를 업그레이드하는 데 필요한 경우 현재 설치된 패키지를 제거합니다.

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