apt-get dist-upgrade 대신 apt-get upgrade를 사용하는 이유는 무엇입니까?


302

apt-get update && apt-get upgradeGUI 대신 업데이트 및 업그레이드를 실행 하는 것이 일반적으로 더 빠릅니다.

그러나 최근에 업그레이드 중 하나가 보류되었다는 메시지가 자주 나타납니다. 그런 다음 일반적으로 실행 dist-upgrade하여 정상적으로 작동합니다. 이 질문 과 답변 을 읽은 후에 알 수있는 한 dist-upgrade모두 똑같은 일을합니다.

그래서 제 질문은 : 왜 apt-get upgrade전혀 사용하지 않습니까? 왜 apt-get dist-upgrade항상 사용하지 않습니까? 왜 apt-get upgrade존재 하는가?


1
최신 우분투 버전 sudo apt full-upgrade에서는 비슷한 작업을 수행합니다.
Aaron Franke

답변:


410

나는 일반적으로 다음과 같이 내 컴퓨터를 업그레이드합니다.

sudo apt-get update && time sudo apt-get dist-upgrade

아래는에서 발췌 한 것입니다 man apt-get. 업그레이드를 사용하면 규칙이 유지됩니다. 어떤 상황에서도 현재 설치된 패키지가 제거되거나 아직 설치되지 않은 패키지가 검색되어 설치되지 않습니다. 이것이 중요한 경우를 사용하십시오 apt-get upgrade. 일이 "잘 작동"하기 apt-get dist-upgrade를 원한다면, 의존성이 해결 되기를 원할 것입니다 .

시스템 관리자 인 경우 dist- upgrade 대신 업그레이드 를 원하는 이유를 확장하려면 예측 성이 필요합니다. 사용 가능한 모든 패키지를 항상 열심히 업그레이드하는 대신 시스템 및 사용 가능한 업그레이드를 검사 할 수있는 다양한 자동화 기능을 갖춘 적절한 PPA 모음 (아마도 자체 PPA가 있음) 에서 적절한 피닝 또는 가져 오기 와 같은 고급 기능을 사용 하고 있을 수 있습니다. apt가 스크립팅되지 않은 동작을 수행 할 때, 특히 프로덕션 서비스가 중단되는 경우 특히 실망 할 것입니다.

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.

44
둘 사이의 차이점을 요약 할뿐만 아니라 하나가 다른 것보다 더 나은 상황을 설명해 주셔서 감사합니다. 이것은 내가 찾던 것입니다.
jimchristie

10
dist-upgrade보다 나쁘게 물건을 깰 가능성이 높습니다 upgrade. upgrade시스템이 완전한 상태를 유지하도록합니다.
Braiam

5
dist-upgrade는로드 롤러 접근 방식에 익숙한 경우 (즉, 미션 크리티컬 프로덕션 소프트웨어가없는 경우) 충돌 패키지 버전 문제를 해결할 가능성이 높습니다.
Henno

1
'apt-get upgrade'에 대한 작은 질문은 "현재 설치된 패키지가 제거되지 않았거나 새로 추가 된 패키지"라는 사실을 나타냅니다. 기존 패키지도 그에 따라 업그레이드됩니다. 예를 들어 oldA는 oldB에 의존합니다. oldA와 oldB가 모두 업그레이드됩니까? newA가 newB가 아닌 oldB에 의존한다면 업그레이드 중에이 두 가지는 어떻게됩니까? 둘 다 업그레이드되지 않았거나 둘 다 업그레이드되었으므로 oldB가 손실되어 newA가 작동하지 않을 수 있습니까?
Kenny

2
time여기서 사용하는 이유는 무엇입니까 ?
ItalyPaleAle 2016 년

128

나는이 질문에 대한 답을 받았으며 1 년이되었다는 것을 알고 있지만 이것이 필요하다고 생각합니다. 우분투 14.04 이상 (데비안 제시 이후, 구글에서이를 찾는 사람들을위한)는 명령을 할 수 있습니다 APT 1.0, 사용 apt대신 apt-get하고 apt-cache일부 작업을.

  • apt-get upgrade 설치된 것을 변경하지 않으며 (버전 만)
  • apt-get dist-upgrade 업그레이드를 완료하는 데 필요한 패키지를 설치 또는 제거합니다.
  • apt upgrade 패키지를 자동으로 설치하지만 제거하지는 않습니다.
  • apt full-upgrade와 동일한 기능을 수행합니다 apt-get dist-upgrade.

@muru 전체 업그레이드에 대한 편집 및 메모에 감사드립니다. 나는 주로 Debian 7 (APT 1.0 이전 버전)을 사용하며 Debian Jessie 및 Ubuntu 14.04에서만 플레이했습니다.
Stephen Angelico

천만에요. jessie정기적으로 14.04를 사용하는 사람으로서 , 나는 당신의 대답에서 처음으로이 새로운 유틸리티에 대해 배웠습니다!
muru

설명에 대한 소스가 apt upgrade있습니까? 내가 생각해 낼 수있는 모든 것은 그것 apt upgrade과 같다고 제안한다 apt-get upgrade. 예를 들어, apt help upgrade내 시스템 출력에서 ​​:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley

1
각 맨 페이지는 내가 처음 말한 내용을 지정 apt하고 apt-get지정합니다.
Stephen Angelico

1
apt safe-upgrade내 시스템에서 올바른 작업이 아닙니다. 당신이 의미하는 것은 aptitude safe-upgrade아닙니다. apt-get upgrade패키지를 설치하지 않습니다, 반면 apt upgradeaptitude safe-upgrade의존성이 그것을 요구로 새로운 패키지를 설치합니다. 따라서 aptitude safe-upgradeapt upgrade같지 않습니다 apt-get upgrade.
Stephen Angelico 2012

7

upgrade옵션은 시스템에 이미 설치된 새 버전의 패키지 만 설치합니다 (예, 커널 업데이트가 해당 패키지에 속함).

그러나 때때로 업데이트가 종속성을 변경합니다. 예를 들어 새 버전의 패키지는 더 이상 설치 한 라이브러리에 의존하지 않거나 추가 라이브러리를 설치해야합니다. 이 upgrade옵션은 더 이상 실제로 필요하지 않은 설치된 패키지를 제거하지 않습니다.

그러나이 dist-upgrade옵션은 종속성 시스템의 변경 사항을 "지능적으로"처리 할 수 ​​있습니다. 여기에는 더 이상 필요하지 않은 패키지를 제거하거나 종속성 변경으로 인해 발생한 패키지 간의 충돌을 해결하는 것이 포함됩니다.


5
이것이 정확하지만 질문에 대답하지 않는다고 생각합니다. 의존성 변경을 처리하고 혼란을 제거 할 수있는 "지능형"옵션이 있다면 항상 사용하지 않는 이유는 무엇입니까?
ændrük

1
upgrade또한 결코 추가하지 새로운 패키지 의존성으로 필요합니다. From man apt-get: "현재 설치되어있는 패키지가 제거되지 않았거나 이미 설치되어 있지 않은 패키지가 검색 및 설치되지 않음"@ ændrük "지능적"이라는 것이 사용자가 항상 원하는 것을 (또는 전혀 합리적인 것) 수행한다는 의미는 아닙니다. . 시스템 업데이트 로 패키지가 제거 될 때 마다 Y를 누르기 전에 수행중인 작업을 살펴 ​​보는 것이 좋습니다.
Eliah Kagan

2

사용자는 다른 (명시 적으로 설치된) 패키지의 종속성으로 인해 암시 적으로 설치된 패키지에 의존했을 수 있습니다. 따라서 패키징 시스템은 dist-upgrade를 통해 제거 될 수있는 특정 기능을 유지하려는 사용자 / 관리자 요구를 인식 할 수 없습니다.


-4

Win-Home 사용자가 항상 "dist-upgrade"하는 데 문제가되지는 않지만 복잡한 시스템을 실행하는 경우 "실제로 실행중인 시스템을 변경하지"않는 것이 좋습니다. "문제가 없어도" , 가능성이 "있을 수 있습니다"-당신을 잘라 무엇입니까! 당신 은 권리 2를 가진 사람이어야한다 ;-)


3
Should not be a problem for Win-Home Users to always "dist-upgrade"..왜 그런 겁니까 ?
heemayl

1
생산적인 환경을위한 워크 스테이션 인 우분투 서버를 설정한다고 가정 해 봅시다. 항상 자동으로 dist-upgrade를 수행하면 문제가 발생했을 때 제어 할 수 없었을 것입니다. 그 순간 자동화 된 dist 업그레이드가 완료됩니다. 일부 구성은 "휴대용"터치 투 포트가 필요할 수 있습니다. 그것이 여러 번 경험 한 것입니다. Win-Home과 같은 "홈"플랫폼에서 작업하는 경우 기본적으로 사용자는 업데이트를 제어 할 수 없습니다. 그래서 당신은 당신을 귀찮게하지 않을 수 있습니다.
Thorben Kaufmann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.