Dlaczego warto korzystać z apt-get upgrade zamiast apt-get dist-upgrade?

302

Zwykle używam apt-get update && apt-get upgradedo uruchamiania aktualizacji i uaktualnień zamiast GUI, ponieważ wydaje się, że działa ono szybciej.

Jednak ostatnio zauważyłem, że często otrzymuję komunikat, że jedno z moich uaktualnień zostało wstrzymane. Następnie zwykle biegam, dist-upgradeaby go uruchomić i działa dobrze. O ile mogę stwierdzić po przeczytaniu tego pytania i jego odpowiedzi, dist-upgraderobi te same rzeczy, a potem niektóre.

Moje pytanie brzmi: po apt-get upgradeco w ogóle korzystać? Dlaczego nie korzystać apt-get dist-upgradecały czas? Dlaczego w apt-get upgradeogóle istnieje?

jimchristie
źródło
1
W nowszych wersjach Ubuntu sudo apt full-upgraderobi podobne rzeczy.
Aaron Franke

Odpowiedzi:

410

Zazwyczaj aktualizuję swoje maszyny za pomocą:

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

Poniżej znajduje się fragment man apt-get. Użycie aktualizacji zachowuje tę zasadę: pod żadnym pozorem nie są obecnie zainstalowane pakiety usunięte lub pakiety jeszcze nie zainstalowane zostały pobrane i zainstalowane. Jeśli to dla Ciebie ważne, użyj apt-get upgrade. Jeśli chcesz, aby rzeczy „po prostu działały”, zapewne chcesz apt-get dist-upgradeupewnić się, że zależności zostały rozwiązane.

Aby dowiedzieć się, dlaczego chcesz aktualizować zamiast dist-upgrade , jeśli jesteś administratorem systemu, potrzebujesz przewidywalności. Być może korzystasz z zaawansowanych funkcji, takich jak przypinanie apt lub pobieranie z kolekcji PPA (być może masz własny PPA), z różnymi automatyzacjami do sprawdzania systemu i dostępnymi aktualizacjami zamiast zawsze chętnego aktualizowania wszystkich dostępnych pakietów. Byłbyś bardzo sfrustrowany, gdy apt wykonuje nieskryptowane zachowanie, szczególnie jeśli prowadzi to do przestoju usługi produkcyjnej.

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.
rduplain
źródło
44
Dziękujemy za nie tylko podsumowanie różnic między nimi, ale także wyjaśnienie sytuacji, w których jedno może być lepsze od drugiego. Właśnie tego szukałem.
jimchristie,
10
dist-upgradejest bardziej prawdopodobne, że źle to zepsuje upgrade. upgradezapewnia, że ​​Twój system pozostaje kompletny.
Braiam
5
dist-upgrade jest bardziej prawdopodobne, aby rozwiązać problemy ze sprzecznymi wersjami pakietów, jeśli nie masz nic przeciwko podejściu do walca drogowego (tj. nie masz oprogramowania produkcyjnego o krytycznym znaczeniu dla firmy działającego na pudełku)
Henno
1
Małe pytanie na temat „apt-get upgrade” odnoszące się do faktu, że „nie zainstalowano aktualnie zainstalowanych pakietów lub dodano nowy”: czy istniejące pakiety również zostaną odpowiednio zaktualizowane. Na przykład oldA zależy od oldB. Czy zarówno oldA, jak i oldB zostaną zaktualizowane? Co powiesz na to, jeśli newA zależy od oldB, a nie newB, co stanie się z tymi dwoma podczas aktualizacji? oba nie zostały zaktualizowane lub oba zostały zaktualizowane, co może spowodować, że nowe A nie będzie działać, ponieważ utracono oldB?
Kenny,
2
Jaki jest powód korzystania timetutaj?
PaleAle
128

Wiem, że na to pytanie udzielono odpowiedzi i ma on rok, ale uważam, że należy to powiedzieć. Ubuntu 14.04 i nowsze (i Debian Jessie i nowsze, dla tych, którzy znajdą to w Google) używa APT 1.0, który pozwala na polecenie aptzamiast apt-geti apt-cachedla niektórych operacji.

  • apt-get upgrade nie zmieni tego, co jest zainstalowane (tylko wersje),
  • apt-get dist-upgrade w razie potrzeby zainstaluje lub usunie pakiety, aby ukończyć aktualizację,
  • apt upgrade automatycznie zainstaluje, ale nie usunie pakietów.
  • apt full-upgradewykonuje tę samą funkcję co apt-get dist-upgrade.
Stephen Angelico
źródło
@muru Dziękujemy za edycję i notatkę o pełnej aktualizacji. Używam głównie Debiana 7 (który jest wcześniejszy niż APT 1.0) i grałem tylko z Debian Jessie i Ubuntu 14.04.
Stephen Angelico
nie ma za co. Jako ktoś, kto jessieregularnie używa i 14.04, po raz pierwszy dowiedziałem się o tym nowym narzędziu z twojej odpowiedzi!
muru
Czy masz źródło opisu apt upgrade? Wszystko, co mogę wymyślić, sugeruje, że apt upgradeto samo apt-get upgrade. Na przykład apt help upgradena wyjściach mojego systemu:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley,
1
Odpowiednie strony apti apt-getokreśl to, co pierwotnie powiedziałem.
Stephen Angelico,
1
apt safe-upgradenie jest prawidłową operacją w moim systemie. Jeśli masz na myśli aptitude safe-upgrade, nie do końca. apt-get upgradenigdy nie zainstaluje pakietów, apt upgradea jednocześnie aptitude safe-upgradezainstaluje nowe pakiety, gdy wymagają tego zależności. Więc aptitude safe-upgradejest równoważne apt upgrade, nie apt-get upgrade.
Stephen Angelico
7

upgradeOpcja instaluje tylko nowe wersje pakietów, które są już zainstalowane w systemie (i tak, aktualizacje jądra należą do nich).

Czasami jednak aktualizacje zmieniają zależności: na przykład nowa wersja pakietu nie będzie już zależeć od zainstalowanej biblioteki lub będzie wymagać instalacji dodatkowych bibliotek. Ta upgradeopcja nigdy nie usunie zainstalowanych pakietów, których już nie potrzebujesz.

Jednak dist-upgradeopcja może „inteligentnie” obsługiwać zmiany w systemie zależności. Obejmuje to usuwanie pakietów, które nie są już potrzebne, lub rozwiązywanie konfliktów między pakietami, które powstały z powodu zmian w zależnościach.

styczeń
źródło
5
Chociaż jest to dokładne, nie sądzę, że odpowiada na pytanie. Jeśli mamy „inteligentną” opcję, która może obsłużyć zmiany zależności i usunąć bałagan, dlaczego nie zawsze z niego korzystać?
ændrük
1
upgradenigdy też nie doda nowych pakietów, które będą potrzebne jako zależności. From man apt-get: „pod żadnym pozorem nie są obecnie zainstalowane pakiety usunięte lub pakiety jeszcze nie zainstalowane zostały pobrane i zainstalowane” @ ændrük To, że coś jest „inteligentne”, nie oznacza, że ​​zawsze zrobi to, czego chce użytkownik (lub nawet coś rozsądnego) . Za każdym razem, gdy aktualizacja systemu usuwa pakiet, dobrze jest sprawdzić, co robi, zanim naciśniesz Y.
Eliah Kagan
2

Użytkownicy mogli polegać na pakietach, które zostały zainstalowane niejawnie z powodu zależności innych (jawnie zainstalowanych) pakietów od nich. W ten sposób system pakowania nie może być świadomy chęci zachowania przez użytkownika / administratora pewnych funkcji, które w przeciwnym razie mogłyby zostać usunięte za pomocą aktualizacji systemu.

użytkownik244474
źródło
-4

Użytkownicy Win-Home nie powinni mieć problemu z „dalszą aktualizacją”, ale jeśli korzystasz ze złożonych systemów, lepiej „nigdy (naprawdę) nie zmieniaj działającego systemu” ... Nawet jeśli nie powinno być problemu , „mogą” być sondy - co cię odetnie! To TY powinieneś mieć 2 decyzje ;-)

Thorben Kaufmann
źródło
3
Should not be a problem for Win-Home Users to always "dist-upgrade"..dlaczego ?
heemayl,
1
Załóżmy, że konfigurujesz serwer Ubuntu, stację roboczą dla środowiska produktywnego: kiedy zawsze i automatycznie dokonujesz aktualizacji, prawdopodobnie nie możesz kontrolować, kiedy pojawiają się problemy - nawet jeśli nie masz czasu na rozwiązanie w tym momencie następuje automatyczna aktualizacja dist. Niektóre konfiguracje mogą wymagać „ludzkiego” dotyku do portu. Właśnie tego doświadczyłem kilka razy. Kiedy po prostu pracujesz na platformach „Home”, takich jak Win-Home, domyślnie użytkownik nie ma możliwości kontrolowania aktualizacji. Więc to ci nie przeszkadza.
Thorben Kaufmann,