Comment installer les mises à jour via la ligne de commande?


693

Lorsque je me connecte à mon serveur Web via SSH, je vois les informations:

88 packages can be updated.
80 updates are security updates

J'ai apt-get updatealors essayé, apt-get upgrademais chaque fois que je me connecte, je vois toujours le message concernant les mises à jour. Comment puis-je les installer?


1
Avez-vous essayé ceci en premier: sudo apt-get clean cela devrait nettoyer le cache.
user2635584

Réponses:


871

Utilisez ceci:

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

La documentation sur chaque aptoption se trouve dans les pages de manuel d’apt . Ceux-ci sont également disponibles en exécutant man aptdans votre terminal.

L'utilisation des deux upgradeet full-upgradeensemble n'est généralement pas nécessaire, mais cela peut être utile dans certains cas: voir la documentation Debian sur les mises à jour depuis Debian 9 .


29
Dois-je toujours redémarrer avec sudo rebootaprès?
hellboy

1
J'avais besoin d'ajouter -y pour que cela fonctionne. Ubuntu 17.10
T04435

125

Exécutez toutes les commandes en tapant sudoune fois:

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

ou

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

ou même plus court dans une boucle for (Merci @dessert)

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

3
Vous pouvez combiner dist-upgradeet autoremovepar apt-get dist-upgrade --auto-remove.
jarno

3
Il n'est pas nécessaire d'exécuter les deux upgradeet dist-upgrade.
jarno

3
@jarno dist-upgradepeut supprimer des paquets. Utiliser upgradefirst peut éviter cela, par exemple lorsque de nouvelles versions de paquet satisfont plus facilement les dépendances que les anciennes. Je ne sais pas à quelle fréquence cela aide lors de la mise à niveau de paquets dans une version stable d'Ubuntu, mais cela est recommandé dans d'autres contextes . Personnellement, je l’utilise rarement dist-upgradedans Ubuntu, et quand je le fais, je ne passe jamais -y. Mais si l’on veut courir dist-upgradeet passer -y, je pense qu’il est raisonnable de upgradecommencer par l’ action.
Eliah Kagan

1
@jarno Bien que vous puissiez enchaîner --autoremoveavec la commande de mise à niveau de votre choix, ce n'est pas conseillé car cela peut vous rendre dans un état impur quand l'un des paquets échoue. Une meilleure solution consiste à utiliser le autoremoveseul élément sur une ligne distincte une fois le processus de mise à jour terminé. Si vous souhaitez nettoyer les anciens fichiers de configuration, vous pouvez également les enchaîner --purge.
Videonauth

@Videonauth oh, cela dépend de la manière dont elle aptest mise en œuvre. Je pense que cela devrait être mis en place de manière à ne pas laisser le système dans un état impur.
jarno

91

C'est un comportement normal.

Le message que vous voyez lors de la connexion a été ajouté au statut du serveur 'Message du jour', qui n'est mis à jour que tous les jours du calendrier (ou au démarrage / démarrage du serveur). Regardez le contenu, en utilisant

cat /etc/motd

Toujours voir les mêmes mises à jour disponibles, après avoir exécuté

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

est à prévoir. Si vous relancez ensuite cette commande, vous ne serez invité à fournir d'autres mises à jour que si d'autres mises à jour (plus récentes) ont été publiées.


Je remarque que les modifications de fichiers dans l'ensemble du système n'apparaissent pas avant le jour de calendrier suivant. Existe-t-il un moyen, comme "Actualiser", de voir immédiatement les modifications?
aljuaid86

Voulez-vous dire des mises à jour pour le contenu de Message-Of-The-Day , ou ne pas obtenir ce que vous voulez après avoir exécuté sudo apt-get update && sudo apt-get upgrade?
david6

3
Ce n'est plus vrai le 16.04. Après "apt-get dist-upgrade" et un redémarrage, je vois "0 paquets peuvent être mis à niveau".
Bogdan Calmac

1
L' instruction '.. ou sur le serveur redémarré ..' ci-dessus couvre cela.
david6

3
cat: / etc / motd: Aucun fichier ou répertoire de ce type
xApple

11

Une fois que vous vous êtes connecté à votre serveur, exécutez la commande ci-dessous.

sudo apt-get upgrade

Ça devrait faire l'affaire. Peut-être avez-vous juste besoin de redémarrer votre serveur.


3
Merci pour votre réponse, mais j'ai essayé sudo apt-get upgrade. Il est hors de question de redémarrer le serveur car j'ai des sites dessus.
Marlin

3
Si vous avez installé une mise à jour affectant directement le noyau, une mise à jour de pilote ou une mise à jour de sécurité critique, vous devez redémarrer le serveur.
Evandro Silva

Peut-être devriez-vous envisager une erreur 503 pendant une minute. Savez-vous de quel type de mise à jour il s'agit?
NorTicUs

1
Comment pouvez-vous donner un 503 si le serveur est hors ligne?
Mon

8

Dans mon cas, j'avais une URL incorrecte ou non accessible dans /etc/apt/sources.list. Après avoir supprimé cette URL, j'ai pu mettre à jour tous les packages avec succès.

Commandes:

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

7

Ma solution (très tardive, j'aime les badges de nécromancien :-)):

  1. Installez wajig (une fois):

    sudo apt-get install wajig 
    
  2. Lorsque vous souhaitez mettre à jour / mettre à niveau complètement votre système

    wajig dailyupgrade
    

    (il vous demandera un mot de passe si nécessaire et effectuera toutes les étapes de mise à jour, de mise à niveau, de mise à niveau dist et de suppression automatique pour vous).



1

Ce script est pratique pour automatiser les mises à jour, notamment pour supprimer les packages inutiles et effectuer un redémarrage uniquement si le système d'exploitation le souhaite.

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 

pour courir sur votre boîte locale laissez juste de cette première ligne faire le ssh

voici un alias que je sauvegarde dans ~ / .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 '

puis sur le terminal je viens d'émettre doit


0

Si vous vous relancez apt-get updateaprès la apt-get upgradefin, ces messages sur ssh login devraient disparaître.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.