équivalent dnf de «yum update --security»

13

yum update --securityinstalle uniquement les mises à jour de sécurité. Je pense que c'est une extension du plugin de sécurité yum.

Existe-t-il une commande dnf équivalente? (dnf a remplacé yum dans Fedora 22)

marcin
la source
1
JFTR: par bugzilla.redhat.com/show_bug.cgi?id=1234930 , cette fonctionnalité n'est disponible que dans DNF 2 et à venir Fedora 26
Sérgio
1
Maintenant mise à niveau dnf --enablerepo = updates-testing --advisory = FEDORA-2019-7cafbe66ba
Sérgio

Réponses:

7

Basé sur http://forums.fedoraforum.org/showthread.php?t=305905

#!/bin/bash

SECURITY_UPDATES_LIST=$( dnf --refresh -q updateinfo list sec | awk '{print $3}' )
SECURITY_UPDATES_NUM=`echo "$SECURITY_UPDATES_LIST" | sed '/^$/d' | wc -l`

if [ "$SECURITY_UPDATES_NUM" -eq 0 ]; then
  exit
fi

dnf upgrade -y $SECURITY_UPDATES_LIST
  • - rafraîchir la synchronisation du dépôt forcé
  • -y installer automatiquement
  • SECURITY_UPDATES_NUM méthode de comptage raffinée / fixe, fonctionne pour 0/1 / infini
Tomot
la source
1
Identique à un doublure en bash ( -yet --refreshpeut être ajouté):up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin
En tant qu'alias à une lignealias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
Weston Ganger
10

Vous pouvez utiliser dnf-automatic avec trois paramètres:

apply_updates = yes
download_updates = yes
upgrade_type = security

(Le fichier de configuration par défaut est /etc/dnf/automatic.conf)

ou en utilisant:

dnf updateinfo list security

pour obtenir toutes les mises à jour disponibles, puis mettez-les à jour manuellement.

cuonglm
la source
1

Vous pouvez mettre le dnf updateinfo list updates securitydans une boucle for sur le script cli ou bash. Je recommande toujours fortement de revoir les mises à jour de sécurité, mais vous pouvez toujours autoriser à ajouter la -ycommande àdnf update

c'est ce qui fonctionne pour moi en fonction de certains besoins:

for i in $(dnf updateinfo list updates security | grep -Ei ^fedora | cut -d' ' -f3) ; do dnf update $i; done

Ou un peu plus court avec awk (sachez que cela ne fonctionne pas avec --refresh)

for i in $(dnf updateinfo list updates security | awk 'NR>1 {print $3}') ; do dnf update $i; done

pour un dnf --refresh

for i in $(dnf updateinfo list updates security| dnf updateinfo list updates security| awk 'NR>1 {print $3}') ; do dnf update $i; done
GrandPuba
la source
0

Les méthodes proposées auparavant ne satisfaisaient pas dans mon cas. Vous pouvez essayer celui-ci et c'est peut-être plus parfait. Créez un fichier avec le nom "dnfupdate-security" puis collez les lignes python ci-dessous ou exécutez cmd:

cmd1: sudo touch / usr / bin / dnfupdate-security && sudo chmod + x / usr / bin / dnfupdate-security

cmd2: sudo gedit / usr / bin / dnfupdate-security

Collez ensuite le code python dans le fichier 'dnfupdate-security', enregistrez-le

Exécution cmd: sudo dnfupdate-security

#!/usr/bin/python
"""
DESCRIPTION: Check for security updates and insert all the packages into "dnf update" as argument.
"""
import os

updateList = ''; x = ''

for x in os.popen("dnf -q updateinfo list sec | awk '{print $3}'"):
    x = x.strip()
    updateList = updateList+' '+x

if x != '':
    os.system('dnf update '+updateList)
else:
    print 'No security updates available at this time!'
LecTos Lacius
la source
1
"plus parfait"?
don_crissti
Cette solution plus parfaite donne une IndentationError (parce qu'elle import osn'est pas au début de la ligne (même si vous supprimez les 3 espaces de tête de chaque ligne). Et même si je corrige votre indentation incohérente, j'obtiens une SyntaxError.
Anthon
Dissiper les anciennes réponses n'est pas quelque chose que vous devriez faire. Certaines personnes peuvent penser la même chose de votre code, c'est-à-dire qu'il est nul.
MelBurslan
Toutes les critiques sont acceptées positivement. J'ai fait quelques modifications. J'ai tout testé et cela devrait fonctionner sur des systèmes basés sur Fedora / Redhat ... Je ne voulais pas dire que la méthode avant ne fonctionnait pas, mais dans mon cas, ça craint?! :)
LecTos Lacius
de sorte que vous mettez les commandes shell de la réponse de Tomot dans des scripts python changeant dnf upgrade -yà dnf update. Y a-t-il d'autres différences importantes?
marcin