Jak zainstalować aktualizacje za pomocą wiersza poleceń?


692

Kiedy loguję się do mojego serwera internetowego przez SSH, widzę informacje:

88 packages can be updated.
80 updates are security updates

Próbowałem apt-get updatewtedy, apt-get upgradeale przy każdym logowaniu nadal widzę komunikat o aktualizacjach. Jak je zainstalować?


1
Czy próbowałeś tego najpierw: sudo apt-get clean powinno wyczyścić pamięć podręczną.
— user2635584,

Odpowiedzi:


868

Użyj tego:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

Dokumentację dotyczącą każdej aptopcji można znaleźć na stronach apt dla apt . Są one również dostępne po uruchomieniu man aptw twoim terminalu.

Używanie obu upgradei full-upgraderazem zwykle nie jest potrzebne, ale w niektórych przypadkach może pomóc: zobacz dokumentację Debiana na temat aktualizacji z Debian 9 .


29
Czy powinienem zawsze zaczynać od nowa sudo rebootpo tym?
— hellboy

1
Musiałem dodać -y, aby to działało. Ubuntu 17.10
— T04435

124

Wykonaj wszystkie polecenia, wpisując sudoraz:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

lub

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

lub jeszcze krócej w pętli for (Thanks @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'

3
Możesz łączyć dist-upgradei autoremovewg apt-get dist-upgrade --auto-remove.
— jarno

3
Nie ma potrzeby uruchamiania zarówno upgradei dist-upgrade.
— jarno

3
@jarno dist-upgrademoże usuwać pakiety. Używanie upgradepierwszego może tego uniknąć, na przykład wtedy, gdy nowe wersje pakietów spełniają zależności łatwiej niż stare. Nie wiem, jak często to pomaga podczas aktualizacji pakietów w stabilnej wersji Ubuntu, ale jest zalecane w innych kontekstach . Osobiście rzadko używam dist-upgradew Ubuntu, a kiedy to robię, nigdy nie przechodzę -y. Ale jeśli ktoś ma uciec dist-upgradei zaliczyć -y, myślę, że rozsądnie jest wykonać tę upgradeakcję jako pierwszą.
— Eliah Kagan

1
@jarno, podczas gdy możesz łączyć w łańcuch --autoremoverazem z wybranym poleceniem aktualizacji, nie jest wskazane, ponieważ może to doprowadzić do stanu nieczystości, gdy jeden z pakietów ulegnie awarii. Lepszym rozwiązaniem jest użycie autoremovesamego w osobnym wierszu po zakończeniu procesu aktualizacji, jeśli chcesz wyczyścić również stare pliki konfiguracyjne, możesz to połączyć --purge.
— Videonauth

@Videonauth oh, to zależy od tego, jak aptjest realizowane. Myślę, że powinien zostać wdrożony, aby nie pozostawiał systemu w stanie nieczystym.
— jarno

91

To jest normalne zachowanie.

Wiadomość, którą widzisz podczas logowania, została dodana do statusu serwera „Wiadomość dnia”, która jest aktualizowana tylko każdego dnia kalendarzowego (lub przy starcie / uruchomieniu serwera). Spójrz na zawartość, używając

cat /etc/motd

Po uruchomieniu nadal widzę te same aktualizacje

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

należy się spodziewać. Jeśli następnie ponownie uruchomić to polecenie będzie tylko zapyta o wszelkich dalszych zmianach czy nawet dalej (nowsze) aktualizacje zostały zwolnione.


Zauważam, że wszelkie zmiany plików w całym systemie nie są widoczne aż do następnego dnia kalendarzowego. Czy istnieje sposób, aby „odświeżenie” od razu zaczęło widzieć zmiany?
— aljuaid86

Czy masz na myśli aktualizacje treści Wiadomości dnia , czy nie otrzymujesz tego, czego chcesz po uruchomieniu sudo apt-get update && sudo apt-get upgrade?
— david6

3
To nie jest już prawdą w dniu 16.04. Po „apt-get dist-upgrade” i ponownym uruchomieniu widzę „0 pakietów można zaktualizować”.
— Bogdan Calmac

1
„.. lub na serwerze restarcie ..” Powyższe stwierdzenie nie pokrywa to.
— david6

3
cat: / etc / motd: Brak takiego pliku lub katalogu
— xApple

11

Po zalogowaniu się na serwerze uruchom poniższe polecenie.

sudo apt-get upgrade

To powinno wystarczyć. Może po prostu musisz zrestartować serwer.


3
Dziękuję za odpowiedź, ale spróbowałem aktualizacji sudo apt-get. Ponowne uruchomienie serwera nie wchodzi w rachubę, ponieważ mam na nim witryny.
— Marlin,

3
jeśli zainstalowano aktualizację, która bezpośrednio wpływa na jądro lub jest to aktualizacja sterownika lub jest to krytyczna aktualizacja zabezpieczeń, należy ponownie uruchomić serwer.
— Evandro Silva

Może powinieneś rozważyć błąd 503 przez minutę. Czy wiesz, co to za aktualizacja?
— NorTicUs

1
Jak podać 503, jeśli serwer jest offline?
— mcont

8

W moim przypadku miałem niepoprawny lub niedostępny URL w /etc/apt/sources.list. Po usunięciu tego adresu URL udało mi się pomyślnie zaktualizować wszystkie pakiety.

Polecenia:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade

7

Moje (bardzo późno, lubię odznaki nekromantów :-)) rozwiązanie:

  1. Zainstaluj wajig (raz):

    sudo apt-get install wajig 
    
  2. Gdy chcesz w pełni zaktualizować / zaktualizować swój system

    wajig dailyupgrade
    

    (w razie potrzeby poprosi o hasło i wykona wszystkie aktualizacje, uaktualnienia, dist-upgrade i autorove kroki).



1

ten skrypt jest przydatny do automatyzacji aktualizacji, w tym usuwania niepotrzebnych pakietów i ponownego uruchamiania komputera tylko wtedy, gdy system operacyjny tego chce

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

aby uruchomić na lokalnej skrzynce, po prostu wyłącz pierwszą linię, wykonując ssh

oto alias, który zapisuję w ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

potem na terminalu właśnie wystawiam doit


0

Jeśli uruchomisz apt-get updateponownie po apt-get upgradezakończeniu, wiadomości przy logowaniu ssh powinny zniknąć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.