dnf äquivalent von "yum update --security"


13

yum update --securityinstalliert nur Sicherheitsupdates. Ich denke, es ist eine Erweiterung des YUM-Security-Plugins.

Gibt es einen äquivalenten DNF-Befehl? (DNF ersetzt YUM in Fedora 22)


1
JFTR: Von bugzilla.redhat.com/show_bug.cgi?id=1234930 , diese Funktion ist nur in DNF 2 und dem kommenden Fedora 26
Sérgio

1
Jetzt dnf upgrade --enablerepo = updates-testing --advisory = FEDORA-2019-7cafbe66ba
Sérgio

Antworten:


7

Basierend auf 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
  • --refresh repo sync erzwingen
  • -y wird automatisch installiert
  • SECURITY_UPDATES_NUM verfeinerte / feste Zählmethode, funktioniert für 0/1 / unendlich

1
Dasselbe wie -y--refreshup=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin

Als Einzeiler-Aliasalias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
Weston Ganger

10

Sie können dnf-automatic mit drei Einstellungen verwenden:

apply_updates = yes
download_updates = yes
upgrade_type = security

(Standardkonfigurationsdatei ist /etc/dnf/automatic.conf)

oder mit:

dnf updateinfo list security

Um alle verfügbaren Updates zu erhalten, aktualisieren Sie sie manuell.


1

Sie können die dnf updateinfo list updates securityfor-Schleife in das CLI- oder Bash-Skript einfügen. Ich empfehle nach wie vor dringend, die Sicherheitsupdates zu überprüfen, aber Sie können jederzeit zulassen, dass der -yBefehl an gesendet wirddnf update

Das funktioniert bei mir je nach Bedarf:

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

Oder etwas kürzer mit awk (beachten Sie, dass dies mit --refresh nicht funktioniert)

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

für ein dnf --fresh

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

0

Die zuvor vorgeschlagenen Methoden waren in meinem Fall nicht zufriedenstellend. Sie können dieses versuchen und es ist möglicherweise vollkommener. Erstelle eine Datei mit dem Namen "dnfupdate-security" und füge dann Python-Zeilen darunter ein oder führe cmd aus:

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

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

Als nächstes fügen Sie den Python-Code in die Datei 'dnfupdate-security' ein und speichern Sie ihn

Execution 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!'

1
"Mehr perfekt" ?
don_crissti

Diese perfektere Lösung liefert einen IndentationError (weil import osnicht am Zeilenanfang steht (auch wenn Sie die drei führenden Leerzeichen aus jeder Zeile entfernen). Und selbst wenn ich Ihren inkonsistenten Einzug korrigiere, erhalte ich einen SyntaxError.
Anthon

Alte Antworten aufzulösen ist nichts, was Sie tun sollten. Einige Leute denken vielleicht dasselbe über Ihren Code, dh er ist scheiße.
MelBurslan

Alle Kritik wird positiv aufgenommen. Ich habe ein paar Änderungen vorgenommen. Ich habe alles getestet und es sollte auf Fedora / RedHat-basierten Systemen funktionieren. :)
LecTos Lacius

Sie fügen also Shell-Befehle aus Tomots Antwort in Python-Skripte ein, die dnf upgrade -yin geändert werden dnf update. Gibt es noch andere wesentliche Unterschiede?
Marcin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.