"dist-upgrade"란 무엇이며 왜 "upgrade"이상으로 업그레이드합니까?


395

upgrade가끔 시스템의 특정 부분을 업그레이드하고 싶지 않은지 궁금 dist-upgrade합니다. 다음은 실행 후의 예입니다 apt-get upgrade.

apt-get upgrade:

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

apt-get dist-upgrade:

rimmer@rimmer-Lenovo-IdeaPad-S10-2:~$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  linux-headers-3.0.0-13 linux-headers-3.0.0-13-generic
  linux-image-3.0.0-13-generic
The following packages will be upgraded:
  linux-generic linux-headers-generic linux-image-generic
3 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 48.5 MB of archives.
After this operation, 215 MB of additional disk space will be used.
Do you want to continue [Y/n]?

다시 말해, 왜 이렇게 할 수 upgrade없습니까?

답변:


327

에서 apt-get수동 :

upgrade
   upgrade is used to install the newest versions of all packages
   currently installed on the system from the sources enumerated in
   /etc/apt/sources.list. Packages currently installed with new
   versions available are retrieved and upgraded; under no
   circumstances are currently installed packages removed, or packages
   not already installed retrieved and installed. New versions of
   currently installed packages that cannot be upgraded without
   changing the install status of another package will be left at
   their current version. An update must be performed first so that
   apt-get knows that new versions of packages are available.

dist-upgrade
   dist-upgrade in addition to performing the function of upgrade,
   also intelligently handles changing dependencies with new versions
   of packages; apt-get has a "smart" conflict resolution system, and
   it will attempt to upgrade the most important packages at the
   expense of less important ones if necessary. So, dist-upgrade
   command may remove some packages. The /etc/apt/sources.list file
   contains a list of locations from which to retrieve desired package
   files. See also apt_preferences(5) for a mechanism for overriding
   the general settings for individual packages.

apt14.04부터 최신 도구를 사용할 수 있습니다.

full-upgrade
   full-upgrade performs the function of upgrade but may also remove
   installed packages if that is required in order to resolve a
   package conflict.

특정 경우에, 나는 참조, 예를 들어, 그 linux-headers모두에 의해 제공되는 가상 패키지 linux-headers-3.0.0-12linux-headers-3.0.0-13그 패키지 설치 및 처리 제거의 종류 같은 소리 dist-upgrade만하지 않음으로써, upgrade.


4
14.04.1 미만 full-upgrade의 옵션으로 표시되지 않습니다 apt-get.
nobar

나는에 대해 알고하지 않았다 apt중 하나지만 그가 연결된 man 페이지에 따라 완전히 diffrent 명령 것 같다
BlueWizard

18
@nobar ... :-) 옵션이 아니기 때문에 apt보이지 않습니다 . apt-getman apt
Hastur

좋아, 내가 검색 한 내가 찾은 최초의 링크가 우분투 15.10입니다 (이는 제시 테스트와 합리적인 솔기 2014 년 말 나온) manpages.ubuntu.com/manpages/wily/en/man8/apt.8.html를
Z 보손을

6
@Zboson Yeah, 14.04는 2011 년이 아니라 2014 년 4 월에 나왔습니다 ... 패턴을 보시겠습니까?
tgies

137

apt-get upgrade패키지를 최신 버전으로 교체해야하는 경우로 제한되지만 패키지를 추가하거나 제거 할 필요는 없습니다. 예를 들어, 새 버전의 Firefox는로 설치할 수 있어야합니다 apt-get upgrade.

그러나 apt-get upgrade업데이트 된 버전에 추가 또는 제거가 필요한 경우 작동하지 않습니다. 예를 들어, 커널을 linux-image-3.2.0-10-generic설치하고 linux-image-3.2.0-11-generic표시 linux-image-generic하면 최신 버전에 따라 패키지가 업데이트됩니다. 새 커널을 설치하려면을 실행해야합니다 apt-get dist-upgrade.

apt-get upgrade커널 패키지가 어떻게되어 있는지 알 수 있습니다 held back. 이것이 사용에 대한 신호입니다 apt-get dist-upgrade.


2
완전한! : D 두 가지 질문이 더 있습니다 ... Ubuntu의 그래픽 업데이트 관리자는 무엇을 사용합니까? 권장되는 것은 무엇입니까?
THpubs

11
그래픽 유틸리티 update-managerapt-get직접 사용하지 않습니다 . 대신 백엔드와 함께 작동합니다 aptdaemon. 표준 기능은 모드 와 모드를 update-manager혼합 한 것입니다. 패키지를 추가 할 수는 있지만 제거 할 수는 없습니다. 제거가 필요한 경우 "부분 업그레이드"도구를 호출합니다. 명령 행을 사용할 때는를 사용하십시오 . 패키지가 "보류"되었다고보고 되면 나머지 업데이트를 선택하십시오. upgradedist-upgradeapt-getapt-get upgradeapt-get dist-upgrade
pablomme

33

기본적으로 업그레이드는 기존 패키지를 한 버전에서 다른 버전으로 만 업그레이드합니다. 다른 패키지를 업그레이드하기 위해 필요한 경우에도 패키지를 설치하거나 제거하지 않습니다. 커널 업데이트의 경우 linux-generic 패키지를 업그레이드하려면 새로운 linux-3.0.0-13-generic 패키지를 설치해야하며 업그레이드는 패키지 설치 또는 제거를 거부하므로 linux-generic 업그레이드를 거부합니다.

때로는 패키지 간 다양한 비 호환성으로 인해 다른 패키지를 업그레이드하기 위해 일부 패키지를 제거해야하며 dist-upgrade도 필요합니다. 커널 업데이트는 처리 방식으로 인해 항상 dist-upgrade가 필요합니다. 커널 패키지가 업데이트되는 대신 매번 완전히 새로운 커널 패키지가 생성되고 커널 메타 패키지는 이전이 아닌 새 커널 패키지에 의존하도록 업데이트됩니다. 이전 커널 버전을 유지하여 새 커널 부팅에 문제가있는 경우 부팅 메뉴에서 이전 커널 버전을 선택하고 복구 할 수 있습니다.


2
최고의 요지. 그래도 특정 패키지를 유지하는 방법은 무엇입니까?
0xC0000022L

11

apt-get upgrade명령은 일반적으로 현재 설치된 패키지에만 업데이트 (또는 수정)를 설치합니다. 예를 들어 일반적으로 Mozilla Firefox 의 새로운 릴리스는 이 명령으로 설치됩니다.

그러나 apt-get upgradeNOT 일반적으로 큰 변화 (패키지 또는 GRUB 업데이트를 제거하는 등 필요) 새 버전을 설치합니다. 예를 들어, 새로운 Linux 커널 (linux-image-3.xx-xx-generic 등)을 사용할 수 있으면 패키지가 설치되지 않습니다.

새 커널을 설치하려면을 실행해야합니다 apt-get dist-upgrade. 실행 apt-get upgrade하면 특정 패키지가 보류되었다는 알림이 표시됩니다 . 그것이 당신의 힌트입니다 : apt-get dist-upgrade.


12
오해의 소지가 있습니다. 그에 따라 수정 dist-upgrade되지 않는 한 새 릴리스로 업그레이드하지 않습니다 sources.list(그리고 심지어 우분투에서 업그레이드하는 방법은 지원되지 않습니다). 와 함께 새로운 커널이 설치 될 때 dist-upgrade, 그것은 새로운 릴리스의 우분투 가 아닙니다 . 새로운 패키지 일뿐 입니다. 또한 "또는 GRUB 업데이트가 필요합니다"라는 주장은 허위입니다. sudo apt-get upgrade패키지를 제거하지 않고 새 패키지를 설치하지 않는 한 GRUB을 업데이트해야하는 상황에서 패키지를 완벽하게 업그레이드 할 수 있습니다. update-grub항상 그렇듯이 자동으로 실행됩니다.
Eliah Kagan

2
명확성을 더하지 않기 때문에 자신의 답변을 작성해야합니다.
david6

2
Eliah가 언급 한 것 외에 필수 사항은 apt-get upgrade패키지를 제거하거나 추가하지 않는 것입니다. 패키지 수정 사항에 새 패키지가 필요한 경우 업데이트가 보류됩니다. 정확성이 떨어지도록 수정 한 pablomme의 답변 이 더 좋으며 독자들에게 그 질문에 가도록 권합니다.
Chan Chan Ho

1
수정 : apt-get upgrade절대 설치하지 또는 제거 어떤 패키지를. 커널 업그레이드는 새 패키지로 패키지되므로 결과적으로 apt-get upgrade커널을 업그레이드하지 않습니다. 커널 업그레이드가 GRUB 구성과 같은 "주요한"변경을한다는 사실 upgrade과와 의 차이점은 아닙니다 dist-upgrade.
Mikko Rantalainen

1

가장 좋은 옵션은 다음과 같습니다.

apt full-upgrade

-패키지를 업그레이드 할 때 종속성을 자동 처리합니다. 그런데, ...한데:

apt upgrade

-패키지를 업그레이드 할 때 종속성을 자동 처리하지 않습니다.

- duBtrotterS

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