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

284

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 depuis la ligne de commande?

    
posée mac9416 29.07.2010 - 00:50
la source

7 réponses

263

Le package mises à niveau sans surveillance permet d’installer automatiquement les mises à jour de sécurité.

Vous pouvez l’utiliser, mais au lieu de configurer la partie automatique, vous pouvez l’appeler manuellement. Pour ce cas, les éléments suivants devraient le faire tranquillement:

sudo unattended-upgrade

ou version plus détaillée, pour contrôler son fonctionnement

sudo unattended-upgrade -d

REMARQUE: Lorsque vous appelez sans mise à niveau, vous laissez le "s" à la fin.

Cela suppose que le package est installé par défaut, ce qui est probablement le cas. Sinon, faites simplement:

sudo apt-get install unattended-upgrades

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

    
réponse donnée blueyed 29.07.2010 - 19:28
la source
101

Quelques conseils sur la façon de gérer les mises à jour

Cela 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 
    

    ou

    sudo unattended-upgrade --dry-run -d
    

    ou

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

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

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

Remarques:

  • Parfois, Ubuntu affiche les mises à jour de sécurité comme si elles provenaient du dépôt $ release-updates. C'est ce que je dis, car les développeurs Ubuntu poussent les mises à jour de sécurité vers le dépôt $ release-updates pour accélérer leur disponibilité.

    Si tel est le cas, vous pouvez effectuer les opérations suivantes 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'
    

    et

    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 '}
    
  • Vérifiez quels services doivent être redémarrés après les mises à niveau de package. Déterminez quels paquets vous allez mettre à niveau au préalable et planifiez vos redémarrages / redémarrages. Le problème est que si vous ne redémarrez pas un service, il peut toujours utiliser une ancienne version d'une bibliothèque (la raison la plus courante) qui a été chargée en mémoire avant d'installer un nouveau package qui corrige une vulnérabilité ou autre.

    checkrestart -v
    

    Cependant, gardez à l'esprit que checkrestart peut répertorier les processus qui ne doivent pas nécessairement être redémarrés. Par exemple, le service PostgreSQL conserve dans sa mémoire une 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, un autre moyen, plus fiable, de vérifier cela à l’aide d’utilitaires standard est le petit script bash suivant, que j’ai dérobé sans vergogne à lien

    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 ceux de 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
    
réponse donnée ILIV 16.11.2012 - 12:35
la source
46

remplacez /etc/apt/preferences par ce qui suit:

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 épinglera 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 référentiel de sécurité reçoivent la priorité par défaut (500) et sont donc considérés pour l'installation. Cela signifie que seuls les packages considérés comme plus souhaitables que ceux actuellement installés sont des mises à jour de sécurité. Pour plus d’informations sur l’épinglage, consultez la page de manuel apt_preferences .

Vous pouvez temporairement promouvoir une certaine distribution pour les mises à jour avec l'option --target-release qui fonctionne avec apt-get et aptitude (au moins), ce qui vous permettra d'épingler certaines versions pour qu'elles puissent être mises à niveau.

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

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

Cela permettra de rechercher le fichier de préférences depuis un emplacement autre que celui par défaut.

Le fichier de préférences donné à titre d'exemple ne s'applique pas aux référentiels tiers. Si vous souhaitez les épingler vous pouvez également utiliser apt-cache policy pour déterminer facilement les clés requises pour l'épinglage.

    
réponse donnée Ressu 29.07.2010 - 06:12
la source
9

Ce qui suit est confirmé dans Ubuntu 14.04 LTS.

Utilisez le package unattended-upgrade .

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 comment il a été configuré pour autoriser uniquement les mises à niveau sans surveillance pour les packages 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";

Cela permet d’effectuer des mises à niveau de sécurité automatiques et automatiques une fois par jour.

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

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

Source: lien

    
réponse donnée vcardillo 03.10.2016 - 19:18
la source
5

Bien que ce soit assez moche, vous pouvez désactiver tous les référentiels en dehors du référentiel de sécurité, puis faire:

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

Je ne l'ai pas testé, mais en théorie, il ne trouverait que les mises à jour dans le référentiel de sécurité et les appliquerait ...

    
réponse donnée Stephen RC 29.07.2010 - 02:00
la source
3
  • apt-get update : Il suffit de lire les entrées dans le référentiel - en fonction de la liste existante. Nécessaire pour vérifier ce qui est nouveau.
  • apt-get upgrade : toutes les mises à jour pour les packages installés sans modules du noyau. Aucune mise à jour de publication.
  • apt-get dist-upgrade : toutes les mises à jour pour les packages installés également avec les modules du noyau. Aucune mise à jour de publication.
  • apt-get avec le paramètre -s : test uniquement, aucune modification effectuée.
réponse donnée fuser 02.08.2013 - 11:49
la source
0

Je ne trouve aucune option dans apt-get ou aptitude, mais quelqu'un a le même question sur SuperUser. La seule réponse est:

  

Vérifiez et ajustez /etc/apt/apt.conf.d/50unattended-upgrade. Avez-vous remplacé 'karmic' par le nom de code de votre Ubuntu?

Pas de réponse quant à savoir si cela a fonctionné cependant.

    
réponse donnée Ross 29.07.2010 - 01:04
la source

Lire d'autres questions sur les étiquettes