380 votes

Comment puis-je installer uniquement les mises à jour de sécurité à partir de la ligne de commande ?

sudo apt-get upgrade installe toutes les mises à jour, pas seulement les mises à jour de sécurité. Je sais que je peux utiliser Update Manager pour sélectionner uniquement les mises à jour de sécurité importantes, mais existe-t-il un moyen de le faire à partir de la ligne de commande ?

0 votes

Je suppose que vous vouliez faire référence à apt-get (dist-)upgrade ?

2 votes

Je ne pense pas. dist-upgrade met le système entier à une nouvelle version. Je parle des mises à jour quotidiennes, comme celles que vous voyez dans Update Manager.

1 votes

Oh, je vois ce que tu veux dire maintenant. Heh, je lance apt-get update si souvent que je le tape sans réfléchir. Merci de m'avoir prévenu !

356voto

Arnold Zokas Points 4086

Le paquet unattended-upgrades fournit une fonctionnalité permettant d'installer automatiquement les mises à jour de sécurité.

Vous pourriez l'utiliser, mais au lieu de configurer la partie automatique, vous pourriez l'appeler manuellement :

sudo unattended-upgrade -d --dry-run
sudo unattended-upgrade -d # Idem --debug

Si vous voulez l'exécuter discrètement à la place :

sudo unattended-upgrade

Note : Lorsque vous appelez unattended-upgrade, vous laissez le "s" à la fin (sur les versions plus récentes, il y a un lien symbolique pour éviter cela).

Cela suppose que le paquet est installé par défaut, ce qui est probablement le cas. Si ce n'est pas le cas, il suffit de le faire :

sudo apt install unattended-upgrades

Voir aussi /usr/share/doc/unattended-upgrades/README.md .

1 votes

Pour désactiver l'exécution automatique de unattended-upgrade vous devez probablement modifier /etc/cron.daily/apt mais je ne suis pas sûr qu'il soit "correct" de le faire.

0 votes

Note latérale : pour le serveur Ubuntu 12.04.5 LTS, unattended-upgrades n'est pas installé par défaut.

18 votes

Puisque vous faites cela à partir de la ligne de commande, utilisez -v pour les messages d'information ou -d pour les messages de débogage. Sinon, l'utilitaire sera très silencieux, auquel cas vous devrez vérifier les journaux dans /var/log/unattended-upgrades . Vous pouvez également utiliser --dry-run pour simuler mais pas pour améliorer quoi que ce soit. Pour plus d'informations et d'autres options, utilisez --help pour obtenir le message d'aide.

137voto

ILIV Points 1497

Quelques conseils sur la manière de gérer les mises à jour

Ceci s'applique à la fois à Debian et à Ubuntu, mais des instructions plus spécifiques pour Ubuntu suivent.

  • Afficher uniquement les mises à jour de sécurité :

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 

    o

    sudo unattended-upgrade --dry-run -d

    o

    /usr/lib/update-notifier/apt-check -p
  • Afficher tous les paquets pouvant être mis à niveau

    apt-get -s dist-upgrade | grep "^Inst"
  • Installer uniquement les mises à jour de sécurité

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print $2'} | 
        xargs apt-get install

Notas:

  • Parfois, Ubuntu affiche les mises à jour de sécurité comme si elles provenaient du dépôt $release-updates. Il en est ainsi, me dit-on, parce que les développeurs d'Ubuntu poussent les mises à jour de sécurité vers le dépôt $release-updates également pour accélérer leur disponibilité.

    Si c'est le cas, vous pouvez procéder comme suit pour afficher uniquement les mises à jour de sécurité :

    sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'

    y

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print $2'}
  • Vérifiez quels services doivent être redémarrés après la mise à niveau des paquets. Déterminez à l'avance les paquets que vous allez mettre à niveau et planifiez vos redémarrages/redémarrages. Le problème est que si vous ne redémarrez pas un service, il peut encore utiliser une ancienne version d'une bibliothèque (raison la plus courante) qui a été chargée en mémoire avant que vous n'installiez le nouveau paquet qui corrige une vulnérabilité de sécurité ou autre.

    checkrestart -v

    Cependant, gardez à l'esprit que checkrestart peut lister des processus qui ne doivent pas nécessairement être redémarrés. Par exemple, le service PostgreSQL peut conserver dans sa mémoire la référence à un fichier xlog déjà supprimé, ce qui n'est pas une raison valable pour redémarrer le service.

    Par conséquent, une autre façon, plus fiable, de vérifier ceci en utilisant les utils standards est le petit script bash que j'ai honteusement volé à partir de https://locallost.net/?p=233

    Il vérifie si les processus en cours d'exécution sur un système utilisent toujours des bibliothèques supprimées en conservant des copies de celles-ci dans la mémoire active.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done

1 votes

Je ne remarque que maintenant ce message. Il est extrêmement précis. Merci beaucoup (+1)

0 votes

D'où vient "checkrestart" ? Je ne le trouve pas dans Ubuntu Trusty. J'ai trouvé "needrestart" qui semble correspondre à vos instructions ?

0 votes

Il peut être trouvé dans le paquet debian-goodies : paquets.debian.org/wheezy/debian-goodies . Il y a aussi needrestart. Vous pouvez trouver les deux sur Xenial en exécutant : $apt-cache search checkrestart

46voto

Coincoin Points 12823

Remplacer /etc/apt/preferences avec les éléments suivants :

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

maintenant un simple apt-get upgrade mettra à jour toutes les mises à jour de sécurité uniquement.

Pourquoi (et comment) cela fonctionne : Le fichier de préférences va épingler tous les paquets de la distribution Ubuntu à la priorité 50, ce qui les rendra moins désirables que les paquets déjà installés. Les fichiers provenant du dépôt de sécurité reçoivent la priorité par défaut (500) afin qu'ils soient pris en compte pour l'installation. Cela signifie que seuls les paquets considérés comme plus désirables que ceux actuellement installés sont des mises à jour de sécurité. Plus d'informations sur l'épinglage dans le Page de manuel apt_preferences .

Vous pouvez promouvoir temporairement une certaine distribution pour les mises à jour avec la fonction --target-release qui fonctionne avec apt-get y aptitude (au moins) qui vous permettra d'épingler certaines versions afin qu'elles soient éligibles pour une mise à niveau.

Si vous souhaitez l'utiliser pour scripts seulement et ne pas le faire par défaut pour le système, vous pouvez placer les règles dans un autre emplacement et utiliser ceci à la place :

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Ceci fera en sorte qu'apt recherche le fichier de préférences à partir d'un emplacement autre que celui par défaut.

Le fichier de préférences donné à titre d'exemple ne s'applique pas aux dépôts de tiers, si vous souhaitez les épingler également vous pouvez utiliser apt-cache policy pour déterminer facilement les clés nécessaires à l'épinglage.

0 votes

Merci de prendre le temps de répondre de manière exhaustive. I pensez à Je comprends comment cela fonctionne. Mais lorsque je crée le fichier /etc/apt/preferences et que je lance apt-get upgrade, il veut mettre à jour tous les paquets, pas seulement les mises à jour de sécurité. Les listes de mise à niveau avant et après sont exactement les mêmes, sauf avec /etc/apt/preferences, il ne veut pas mettre à jour Leafpad, que j'ai construit à partir des sources et installé "à la main" avec dpkg. C'est très étrange pour moi, mais cela peut signifier quelque chose pour vous.

1 votes

Vous pouvez voir ce qui se passe avec la commande apt-cache policy. Choisissez un des paquets qui ne reçoit pas de correctif de sécurité et lancez apt-cache policy packagename . Cela donnera la liste des priorités pour les différentes versions. Vous devriez voir plusieurs lignes avec des priorités différentes. S'il n'y a pas de lignes avec la priorité 50, cela signifie que l'épinglage n'affecte pas les paquets en question pour une raison quelconque.

1 votes

J'avais suivi cette réponse dans le passé. Aujourd'hui, j'ai découvert qu'en raison de cette réponse, 68 paquets de mise à jour de sécurité n'ont PAS été installés sur mon serveur et ne sont pas apparus comme des candidats potentiels à l'installation. Ce n'est PAS UNE BONNE RÉPONSE !

12voto

vcardillo Points 322

Ce qui suit est confirmé dans Ubuntu 14.04 LTS.

Utilisez le unattended-upgrade paquet.

Regardez le fichier /etc/apt/apt.conf.d/50unattended-upgrades . Il devrait y avoir une section en haut qui est :

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

Notez qu'il a été configuré pour n'autoriser que les mises à niveau non surveillées des paquets de sécurité, par défaut.

Modifier le fichier /etc/apt/apt.conf.d/10periodic similaire à :

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Ceci lancera des mises à jour de sécurité automatiques sans surveillance, une fois par jour.

Maintenant, pour exécuter manuellement : sudo unattended-upgrade .

Pour faire un essai à blanc, sans rien faire : sudo unattended-upgrade --dry-run .

Source : https://help.ubuntu.com/14.04/serverguide/automatic-updates.html

0 votes

Y a-t-il un moyen d'en faire un programme mensuel ?

1 votes

@mike.b93, je crois que la mise en place APT::Periodic::Unattended-Upgrade "30"; Je ferais ça tous les 30 jours.

6voto

Micah Butler Points 111

Si vous souhaitez installer uniquement les mises à jour de sécurité, la procédure suivante fonctionne. Tout d'abord, elle liste tous les paquets pouvant être mis à jour, ne filtre que ceux qui proviennent d'un dépôt de sécurité, coupe les chaînes retournées au premier champ, puis les passe à apt-get install pour la mise à jour des paquets.

sudo apt list --upgradable | grep security |cut -d\/ -f1|xargs sudo apt-get install -y

2 votes

@keypress propose une excellente amélioration pour cette solution élégante : l'utilisation de --only-upgrade pour s'assurer qu'aucun nouveau paquet ne sera installé. Je viens de le tester avec apt et ça marche.

0 votes

Si je comprends bien, sudo apt update doit être exécuté au préalable, pour s'assurer que sudo apt list trouve tout nouveau.

0 votes

Oui, c'est exact ; apt-get update devrait déjà avoir été lancé avant de pouvoir lister les mises à jour de sécurité.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X