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?

Marlin
la source
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 .

SirCharlo
la source
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'
Benny
la source
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.

david6
la source
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.

Mitch
la source
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
Burtsevyg
la source
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).

Rmano
la source
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

Scott Stensland
la source
0

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

Francisco Luz
la source