업데이트와 업그레이드의 분리가 존재하는 이유는 무엇입니까?


12

나는에 이해 apt명령, update사용 가능한 패키지 목록을 업데이트하지만 이미 이러한 패키지에서 설치 한 소프트웨어를 업그레이드하지 않습니다.

또한 위에서 설명한대로 upgrade업데이트 한 패키지에서 이미 설치 한 모든 소프트웨어 를 업그레이드 한다는 것을 이해합니다 update.

우분투 / 데비안 개발자 가이 분할을 수행 update하고 upgrade대신 하나의 명령으로 두 작업을 수행 하는 이유는 무엇입니까 ?

이것은 우분투 개발자의 건축 철학에 대한 질문입니다.


많은 응용 프로그램을 설치하고 그룹화 할 때 하나의 그룹에 대한 하나의 명령, 다음에 대한 다음 명령 등을 설치하려는 경우 repo.update와 이후의 설치 단계 대역폭을 절약 할 수 있습니다. 두 가지를 모두 수행하는 명령을 원한다면 스크립트 나 alias어쨌든 할 수 있습니다 . 유닉스 방식은 하나의 명령으로 어쨌든 하나의 일만 수행하므로 '신학 적 / 철학적'논쟁이 당신에게도 해당된다면 유닉스 방식과 분리하는 것이 더 좋습니다.
guiverc

내가 가면 마찬가지로, apt dist-upgrade그리고 히트 "N"취소 후, 나는 대역폭을 절약 할 수 내 마음을 바꿀 수 있기 때문에 다시 할 내을 위해 '갱신'하지 않을 것이다 apt dist-upgrade'DIST 업그레이드'하는 경우에 ... 명령을 업데이트했다 자동으로 'install', 'upgrade'또는 'dist-upgrade'를 포함하지 않는 'update'의 이유가 있으므로 'update'명령이 존재합니다.
guiverc

나는 사용자 관점에서 분리가 존재해서는 안되며 필요시 조치가 자동으로 실행되어야 한다고 주장 했습니다 apt update.
Robie Basak

답변:


7

업그레이드가 필요한 유일한 시간은 아니며 apt-get update패키지 목록을 업데이트 할 때마다 업그레이드하고 싶지 않습니다.

apt-get upgrade잘 작동이에 따라 달라질 수 있습니다 apt-get update얼마 전에 실행되고,하지만 그것은 마찬가지입니다 apt-get removeapt-get install뿐만 아니라! 이 모든 것이 암시해야합니까 apt-get update? 당연히 아니지! 리소스 효율성과 설계 청결도의 단순한 문제로서, 작업이 여러 다른 작업에 공통적 인 경우이를 제외해야합니다.

반대로, 주어진 apt-get removeapt-get install도에 따라 달라질 수 있습니다 apt-get update최근 성공적으로 마무리에 실행되고, 그것은 이해가 않습니다 apt-get upgrade각 실행에 대해 apt-get update? 다시 말하지만, 내가하려는 일 apt-get upgrade이 할 일과 충돌 할 수 있기 때문에 .


6

소프트웨어 소스를 변경할 때마다 sudo apt update사용 가능한 소프트웨어 목록을 새로 고치려면 명령 을 실행해야합니다 . 그런 다음 방금 추가 한 새 소프트웨어 소스에서 사용 가능한 패키지를 검색하거나 설치할 수 있습니다.

이 명령 sudo apt upgrade은 Software Updater 응용 프로그램을 사용하여 설치된 패키지 목록을 업그레이드하는 것과 동일한 터미널입니다. 이는 새 소프트웨어 소스 추가, 사용 가능한 소프트웨어 목록을 업데이트하여 새 소프트웨어 소스의 패키지를 포함하고 방금 추가 한 새 소프트웨어 소스의 새 패키지를 설치하는 일반적인 워크 플로우와 다릅니다. 혼란스럽지 sudo apt update않으며 sudo apt upgrade별도의 명령입니다.

또한 적은 별도의 혼란 sudo apt updatesudo apt upgrade실행할 때 때문에 sudo apt update성공적으로 당신은 당신이 인터넷 연결이 있음을 확인했다. sudo apt upgrade나중에 실행할 때 문제가 발생하면 인터넷 연결 문제보다 패키지 관리 문제 일 가능성이 높으며 그 결과 sudo apt upgrade는 문제를 진단하고 해결할 수있는 단서를 제공합니다.


5

차이의 역사 update와는 upgrade꽤 멋지다.

우분투가 존재하기 몇 년 전인 2000 년 전과 같이 대역폭과 디스크 공간은 1990 년대 중반에 비해 광대하지만 훨씬 더 제한적이었습니다. 광대역은 이제 막 시작되었고 전화 접속은 여전히 ​​온라인으로가는 중요한 방법이었습니다. 큰 디스크는 여전히 수백 MB에 불과했습니다. Apt는 dpkg 위에 세워진 새롭고 급진적이고 혁명적이었습니다.

당신이 그것에 대해 생각할 때 apt 데이터베이스는 놀라운 것입니다 : 그것은 모든 알려진 저장소 의 모든 소프트웨어 의 정확한 최신 데이터베이스입니다 . 의존성을 계산하고 사용 가능한 업그레이드를 식별하기에 충분하지만 시간의 전화 접속 모뎀을 통해 전송하고 시간의 작은 드라이브에 저장할 수있을 정도로 작습니다. 전화로 데이터베이스를 업데이트 하면 연결 상태 가 몇 분 정도 걸릴 수 있습니다 . 지금은 오랜 시간이 지났지 만, 패키지 업데이트를 수동으로 (적절하기 전에) 찾으려면 시간이 걸릴 수 있습니다 .

그 당시에는 배포가 다르게 통합되었습니다. 지속적인 통합, 연기 테스트 (아무런 테스트도 아님), 빌드 팜이 시작되었습니다. 업그레이드는 지금보다 더 자주 되돌려 져야했습니다. 많은 사용자들이 다양한 이유로 특정 패키지를 업그레이드 하지 않거나 오늘 (수동으로 테스트하기 위해) 특정 업그레이드 만 선택하고 내일 다른 업그레이드를 선택했습니다.

이상 15가 - 나 - 그래서 년 이후 도구는 우리가 아직 별도의 이유이다, 많이 변경되지 않은 updateupgrade행동. 사용자 워크 플로우 배포판 신뢰성 개선으로 진화하고있다 많은 소스 / 업데이트 / 업그레이드 관리를 천천히 자동화 층 뒤에 숨겨진 된 매뉴얼로 사용하는 것이 ( software-updater, unattended-upgrades).

소프트웨어 패키지 도구 현대화는 Snaps 및 AppImage 및 Flatpack이 최근 등장한 이유 중 하나이지만 다음 장입니다.


2

그들은 여러 가지 이유로 분리합니다.

한 가지 예는 내가 게시하고 자체 답변 한 질문입니다. GUI를 사용하여 PPA를 어떻게 제거 할 수 있습니까? . 이 화면 에서 소프트웨어를 업그레이드하지 않은 PPA제거 하려고 합니다.

PPA.png를 제거하십시오

PPA를 제거한 후 GUI 소프트웨어가 자동으로 실행됩니다 sudo apt update. 명령 행에서 PPA를 제거하려면 소스 목록에서 PPA를 제거한 sudo apt update 실행해야 합니다.

별도의 apt update기능이 없으면 PPA를 제거 할 방법이 없습니다!.


또 다른 예는 sudo apt update소스를 새로 고치려면 명령 줄에서 실행해야한다는 것입니다. 그런 다음 실제로 업그레이드 하지 않고 업그레이드 할 수있는 항목을 찾을 있습니다 .

$ apt list --upgradable
Listing... Done
conky-std/xenial 1.10.1-3 amd64 [upgradable from: 1.9.0-4]
google-chrome-stable/stable 65.0.3325.181-1 amd64 [upgradable from: 63.0.3239.132-1]
libxnvctrl0/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
nvidia-settings/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
peek/xenial 1.3.1-0~ppa23~ubuntu16.04.1 amd64 [upgradable from: 1.2.1-0~ppa20~ubuntu16.04.1]

출력을 살펴보면 주어진 패키지를 "고정"또는 "보류"하고 다음 번에 "sudo apt upgrade"를 실행할 때 업그레이드하지 않도록 결정할 수 있습니다. .

별도가 없으면 apt update업그레이드 할 대상을 볼 수 없습니다!


두 번째 단락은 거짓입니다. yumdnf관련 작업을 수행 할 때 자동으로 업데이트 동등한를 실행합니다. 예를 들어 apt list --upgradableis 의 동등 항목은 yum check-update최근 업데이트되지 않은 패키지 목록을 업데이트합니다. 다른 패키지 관리자에서 볼 수 있듯이 이것이 작동하는 것이 가능합니다.
muru

@muru 저장소를 제거한 후에 실행해야한다고 말하는 이 238 개의 투표 응답 을 기반으로 sudo apt update합니다.
WinEunuuchs2Unix

두 번째 --- 구분 된 섹션.
muru

당신이 그것을 언급 했으므로, 그것은 또한 거짓입니다. yum/ 의 예에서 볼 수 있듯이 dnf업데이트 작업은 자동으로 수행되므로 비활성화 된 소스는 다음 작업에서 자동으로 제거됩니다. 다시 말하지만 완전히 가능한 것입니다.
muru

@muru 또한 적어도 내 시스템 에는 설치되어 있지 yum않습니다 dnf. 교체 용으로 이들 중 하나를 설치 apt update하면 시스템 오버 헤드와 학습 시간이 늘어납니다.
WinEunuuchs2Unix

0

공식 우분투 저장소에서 프로그램을 다운로드 apt한 다음 설치 해야하는 이유를 물을 수 있습니까? 한 번의 작업으로 다운로드하여 설치하는 대신 먼저 다운로드 한 다음 설치하면 어떤 차이가 있습니까?

음 주석을 읽고보기에 생각 후에 나는 이것이 때문이라고 이해 유닉스 철학 하는 모듈 기본적으로는 "각 프로그램은 한 가지 않습니다"라는 철학 : 먼저 다운로드 한 후 설치 --- 자체 전용 프로그램으로 각 작업 .


0

배포판에는 업데이트 업 그레 이드 명령이 하나 있습니다.있는 경우 미리 추정 된 별칭 만 있습니다. ~ / .bashrc를 편집하여 우분투에서도 이러한 별칭을 쉽게 설정할 수 있습니다.

업데이트는 리포지토리를 다시 동기화하고 문제를 해결하는 데 사용됩니다. 그런 다음 업그레이드 할 때 실제로 설치된 패키지를 업그레이드합니다. 그러나 Dist-Upgrade는 전체 업그레이드입니다. Arch linux에서는 Syu로 전체 업그레이드를 강조합니다. 우분투에서도 똑같이 할 수 있습니다. 전체 업그레이드에서는 실제로 부분 업그레이드에서 발생할 수있는 종속성 문제 시스템을 현명하게 해결합니다.

도움이 되길 바랍니다. 휴대 전화로 글을 쓰는 것으로 실례를 해주세요.


2
yumdnf자동에 해당 할 update캐시 된 데이터가 오래된만큼이 경우 대부분의 작업에. 예를 들어 dnf에서 해당 동작을 변경하는 방법에 대한 토론을 참조하십시오. lwn.net/Articles/750334
muru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.