Co robi „sudo apt-get update”?

512

Zastanawiam się co sudo apt-get updaterobi?

Co to aktualizuje?

Elizjum
źródło

Odpowiedzi:

549

Krótko mówiąc, apt-get updatetak naprawdę nie instaluje nowych wersji oprogramowania. Zamiast tego aktualizuje listy pakietów aktualizacji dla pakietów wymagających aktualizacji, a także nowych pakietów, które właśnie przybyły do ​​repozytoriów.

  • apt-get updatepobiera listy pakietów z repozytoriów i „aktualizuje” je, aby uzyskać informacje o najnowszych wersjach pakietów i ich zależnościach. Zrobi to dla wszystkich repozytoriów i umów PPA. Od http://linux.die.net/man/8/apt-get :

    Służy do ponownej synchronizacji plików indeksów pakietów z ich źródeł. Indeksy dostępnych pakietów są pobierane z lokalizacji określonych w /etc/apt/sources.list(5). Aktualizację należy zawsze wykonać przed aktualizacją lub aktualizacją.

  • apt-get upgradepobierze nowe wersje pakietów istniejących na komputerze, jeśli APT wie o nich apt-get update.

    Od http://linux.die.net/man/8/apt-get :

    Służy do instalowania najnowszych wersji wszystkich pakietów aktualnie zainstalowanych w systemie ze źródeł wymienionych w /etc/apt/sources.list(5). Pakiety aktualnie zainstalowane z dostępnymi nowymi wersjami są pobierane i aktualizowane; w żadnym wypadku aktualnie zainstalowane pakiety nie są usuwane, a pakiety, które nie zostały jeszcze zainstalowane, nie są pobierane i instalowane. Nowe wersje aktualnie zainstalowanych pakietów, których nie można zaktualizować bez zmiany statusu instalacji innego pakietu, pozostaną w aktualnej wersji. [Moje wyróżnienie] Najpierw należy wykonać aktualizację, aby apt-get wiedział, że dostępne są nowe wersje pakietów.

  • apt-get dist-upgradewykona to samo, co zostało wykonane przez apt-get upgrade, a także inteligentnie poradzi sobie z zależnościami, aby usunąć przestarzałe pakiety lub dodać nowe. Zobacz tutaj: Co to jest „dist-upgrade” i dlaczego uaktualnia więcej niż „upgrade”?

    Od http://linux.die.net/man/8/apt-get :

    Oprócz wykonywania funkcji aktualizacji, ta opcja inteligentnie obsługuje także zmieniające się zależności z nowymi wersjami pakietów; apt-get ma „inteligentny” system rozwiązywania konfliktów iw razie potrzeby podejmie próbę uaktualnienia najważniejszych pakietów kosztem mniej ważnych. Plik /etc/apt/sources.list(5) zawiera listę lokalizacji, z których można pobrać żądane pliki pakietów. Zobacz także apt_preferences (5), aby poznać mechanizm zastępowania ogólnych ustawień dla poszczególnych pakietów.

Możesz łączyć polecenia &&w następujący sposób:

sudo apt-get update && sudo apt-get install foo bar baz foo-dev foo-dbg

lub aby uzyskać najnowsze wersje możliwe zgodnie z wymaganiami zależności wersji:

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

Potrzebujesz sudoobu razy, ale ponieważ sudodomyślnie nie wyświetla monitu w ciągu około 5 minut od ostatniej sudooperacji, hasło zostanie wyświetlone tylko raz (lub wcale).

ζ--
źródło
11
Czy zawsze musimy uruchamiać sudo apt-get updatepolecenie za każdym razem, gdy instalujemy pakiety? Jaka jest wada, jeśli tego nie zrobimy?
JohnnyQ,
14
@JohnnyQ Jeśli nie uruchomisz tego polecenia, może zostać zainstalowany nieaktualny pakiet.
ζ--
ah brzmi jakby to była tylko konwencja. Więc zakładam, że tak naprawdę nie jest to konieczne, szczególnie jeśli używasz tylko podstawowych pakietów z podstawowymi poleceniami, które zwykle nie są aktualizowane. Problem w mojej sytuacji jest taki, że apt-get updatezajmuje to trochę czasu, internet tutaj jest nadal prymitywny.
JohnnyQ
2
@JohnnyQ, jeśli twoja aktualizacja apt-get jest powolna, to twoja apt-get dist-upgrade będzie również powolna, więc to nie jest tak naprawdę argument, żeby nie robić najpierw apt-get update. Przy okazji możesz przyspieszyć aktualizację apt-get, zaglądając do folderu /etc/apt/sources.d/, aby sprawdzić, czy masz dodane niestandardowe repozytoria i jedno z nich może nie odpowiadać, co spowolni cały proces aktualizacji.
Mladen B.
1
Nawiasem mówiąc, „apt” oznacza Advanced Packaging Tool ( wiki.debian.org/Apt „Co to jest APT?”). Czegoś nauczyłem się innego dnia, pomyślałem, że się podzielę. („apt” pojawia się często w man apt-get, man apt, ale nigdy wcześniej nie widziałem rozszerzenia akronimu).
jgreve
47

Wyszukiwarka Google może podać definicję prawie każdego polecenia terminala, podobnie jak --help w terminalu. Na przykład,

apt-get --help

sudo apt-get update zasadniczo składa się z trzech części:

sudo

wykonuje następujące polecenie z funkcjami superużytkownika (root). Wiele działań wymagających modyfikacji plików systemowych lub instalowania aplikacji wymaga dodatkowych uprawnień.

apt-get

to narzędzie wiersza polecenia, którego Ubuntu używa do instalowania, usuwania i zarządzania pakietami oprogramowania

update

jest opcją dla programu apt-get, który aktualizuje listy pakietów z serwera w Internecie. Listy pakietów zawierają narzędzie apt-get z ważnymi informacjami na temat pakietów oprogramowania, które można zainstalować za pomocą apt-get. apt-get używa tych list do ustalenia, które oprogramowanie zainstalować, gdy otrzyma polecenie instalacji. Na przykład

sudo apt-get install guake

zainstalowałbym terminal Guake, ponieważ jest on obecnie wymieniony na lokalnych listach oprogramowania mojego komputera. Może to jednak nie być odpowiednia wersja lub jeśli program jest nowy, może nie być w ogóle dostępny. Dlatego podczas instalowania oprogramowania za pomocą apt-get zazwyczaj piszesz

sudo apt-get update
sudo apt-get install <package>

upewniając się, że apt-get wie, jak zainstalować najnowszą wersję pakietu.

Innym przydatnym źródłem informacji jest help.ubuntu.comstrona. Na przykład, jeśli przeszukałeś tę witrynę apt-get, znajdziesz AptGet / Howto jako jeden z wyników.

Alex
źródło
Alex, czy mogę w zasadzie użyć polecenia tak, jak to ująłeś: „apt-get update apt-get install <package>” Zasadniczo można wykonać 2 czynności, wpisując razem 2 polecenia w ten sposób?
Elysium
1
@Elysium Tak, jeśli masz &&między nimisudo apt-get update&&sudo apt-get install foo bar baz
ζ--
7
Użycie &&oznacza, że ​​drugie polecenie zadziała tylko wtedy, gdy pierwsze się powiedzie. Jeśli nie zależy ci na sukcesie pierwszego polecenia, użyj ;zamiast niego.
Flimm
4
Wyszukiwarka Google doprowadziła mnie do tego pytania / odpowiedzi. Just FYI;)
teewuane
19

Uruchamianie sudo apt-get updatepo prostu upewnia się, że lista pakietów ze wszystkich repozytoriów i umów PPA jest aktualna. Jeśli to polecenie nie zostanie uruchomione, być może pojawią się starsze wersje instalowanych pakietów lub, co gorsza, problemy z zależnościami. Jeśli właśnie dodałeś PPA i nie dokonałeś aktualizacji, nic z PPA w ogóle nie będzie działać, ponieważ nie masz listy pakietów z tego PPA lub repozytorium.

W skrócie: jest wysoce zalecane, aby uruchomić sudo apt-get updateprzed instalacją, ale to może być pominięte, jeśli są naprawdę mało czasu , chyba że zostały zmienione lub repozytoriów PPA od ostatniego apt-get update.

ζ--
źródło
13

Aktualizuje listę dostępnych programów na twoim komputerze.

Twój komputer ma listę (jak katalog), która zawiera całe dostępne oprogramowanie dostępne dla serwerów Ubuntu. Jednak dostępne oprogramowanie i wersje mogą się zmienić, więc „aktualizacja” trafi na serwer i zobaczy, jakie oprogramowanie jest dostępne w celu aktualizacji jego lokalnych list (lub katalogów).

Zauważ, że updateróżni się od upgrade. Aktualizacja, jak wspomniano powyżej, pobierze dostępne oprogramowanie i zaktualizuje listy, jednocześnie upgradeinstalując nowe wersje oprogramowania zainstalowanego na komputerze (rzeczywiste aktualizacje oprogramowania).

Aby faktycznie zaktualizować oprogramowanie (nie „aktualizować” list), wykonaj polecenie

sudo apt-get upgrade

który jest zwykle wykonywany po „aktualizacji”.

Sam
źródło
Po co to jest sudo apt-get install? Instalujesz określone pakiety zamiast ogólnej aktualizacji?
Peter Mortensen
12

Musisz uruchomić apt-get updateraz przed instalacją nowych pakietów, ponieważ aktualizuje to informacje o lokalnym repozytorium. Jeśli zamierzasz zainstalować wiele pakietów wkrótce po sobie, nie musisz uruchamiać apt-get update. Możesz także zainstalować wiele pakietów jednocześnie, jeśli wpiszesz sudo apt-get install package1 package2...

Jason Petrilla
źródło
Niezła sztuczka!
Emerson Hsieh
6

Podczas instalowania pakietów z wiersza polecenia za pomocą sudo apt-get install ...(lub sudo aptitude install ...) lub podczas uaktualniania ich z wiersza polecenia (z upgradelub dist-upgradezamiast install), następujące informacje są uzyskiwane z konfiguracji systemu lokalnego, a nie z Internetu:

  1. jakie pakiety są dostępne

  2. jakie ich wersje są dostępne

  3. skąd należy pobrać dostępne pakiety

Uruchomienie sudo apt-get update(lub sudo aptitude update) aktualizuje to w systemie lokalnym. Jest to krok, który faktycznie pobiera informacje o tym, które pakiety można zainstalować, w tym jakie aktualizacje aktualnie zainstalowanych pakietów są dostępne , ze źródeł internetowych.

Po zainstalowaniu pakietów z interfejsem GUI (Menedżer aktualizacji, Centrum oprogramowania lub Menedżer pakietów Synaptic) praca sudo apt-get updatejest wykonywana automatycznie. Podczas instalowania pakietów z wiersza polecenia tak nie jest i zawsze powinieneś to robić sam, chyba że zrobiłeś to niedawno .

Ponieważ informacje o tym, jakie zaktualizowane wersje pakietów są dostępne, można uzyskać, uruchamiając sudo apt-get update(lub sudo aptitude update), zaleca się uruchomienie tego przed instalacją dowolnego pakietu i konieczne jest uruchomienie go w celu zainstalowania najnowszych aktualizacji, nawet jeśli nie dodano ani nie usunięto żadnego oprogramowania Źródła (takie jak PPA) .

Pamiętaj, że jeśli zamierzasz wykonać wiele operacji zarządzania pakietami w tym samym czasie, nie musisz uruchamiać sudo apt-get updateprzed każdym z nich. Tylko jeśli informacje nie były aktualizowane przez jakiś czas, powinieneś je uruchomić.

Eliah Kagan
źródło
4

Jak wspomniano powyżej Eliah Kagan, można się spodziewać, że aplikacja GUI będzie działała apt-get updateprzed apt-get install/ apt-get upgrade, ale właśnie odkryłem interesujący błąd 404 na stosunkowo nowej maszynie wirtualnej ofensywnie zabezpieczonej, która przez minutę mnie zaskoczyła.

Z wiersza poleceń uruchomiłem apt-get update, a następnie ponownie spróbowałem wykonać polecenie Narzędzia systemowe / Aktualizacja oprogramowania i tym razem nie wystąpiły błędy 404.

Myślę, że nie zawsze można założyć, że apt-get updatejest uruchamiany z aplikacji GUI ...

mikepratt
źródło
Ciekawe ... Czy może wystąpić nietypowa sytuacja sieciowa między tobą a serwerem, która jest lepiej obsługiwana podczas uruchamiania apt-getniż przez automatyczne sprawdzanie przeprowadzane przy użyciu narzędzia Software Updater / Update Manager? Czy korzystasz z proxy HTTP? Czy jesteś w stanie sprawić, by to się powtórzyło, czy może stało się to tylko raz? Jeśli jest to izolowana anomalia, zastanawiam się, czy problem może wynikać z tymczasowej błędnej konfiguracji serwera. Z jakiego lustra korzystasz? Więcej informacji może może poprawić moją odpowiedź. (Przy okazji, czy jest to zamierzone jako osobna odpowiedź, czy powinno być przekształcone w komentarz?)
Eliah Kagan
3

Jak powiedziało wiele osób przede mną, aktualizuje to twoje lokalne repozytorium (lista pakietów).

Podczas próby instalacji możesz mieć problemy

apt-get install foobar

a foobar lub zależność nie mają najnowszej wersji w repozytorium. Może to być szczególnie problematyczne w przypadku ręcznego instalowania pliku .deb lub ppa od strony trzeciej.

Zasadniczo upewnia się, że twoja lista jest zgodna z listą główną .

N8tron
źródło
2

Rozważmy przykład instalacji odtwarzacza multimediów VLC na Ubuntu:

sudo apt-get update

Sprawdza repozytoria pod kątem dostępnych aktualizacji.

Natomiast

sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc

zainstaluje odtwarzacz multimedialny VLC z repozytoriów, których szukaliśmy.

Jeśli zalogowałeś się jako użytkownik root (administrator), nie musisz go używać sudo, ponieważ masz już uprawnienia superużytkownika.

Praveen Vinny
źródło