dnf equivalente di "yum update --security"


13

yum update --securityinstalla solo aggiornamenti di sicurezza. Penso che sia un'estensione dal plugin yum-security.

Esiste un comando dnf equivalente? (dnf ha sostituito yum in Fedora 22)


1
JFTR: da bugzilla.redhat.com/show_bug.cgi?id=1234930 , questa funzione è disponibile solo in DNF 2 e in arrivo Fedora 26
Sérgio

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

Risposte:


7

Basato su 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 force repo sync
  • -y installa automaticamente
  • SECURITY_UPDATES_NUM metodo di conteggio perfezionato / fisso, funziona per 0/1 / infinito

1
Lo stesso di one-liner in bash ( -ye --refreshpuò essere aggiunto):up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin

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

10

È possibile utilizzare dnf-automatic con tre impostazioni:

apply_updates = yes
download_updates = yes
upgrade_type = security

(Il file di configurazione predefinito è /etc/dnf/automatic.conf)

o usando:

dnf updateinfo list security

per ottenere tutti gli aggiornamenti disponibili, quindi aggiornarli manualmente.


1

Puoi inserire il dnf updateinfo list updates securityciclo in a for nello script cli o bash. Consiglio vivamente di rivedere gli aggiornamenti di sicurezza, ma puoi sempre consentire di inviare il -ycomando adnf update

questo è ciò che funziona per me in base ad alcune esigenze:

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

O un po 'più breve con awk (attenzione che non funziona con --refresh)

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

per 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

0

I metodi proposti prima non erano soddisfacenti nel mio caso. Puoi provare questo ed è forse più perfetto. Crea il file con il nome "dnfupdate-security" quindi incolla le righe di Python in basso o esegui cmd:

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

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

Quindi incolla il codice Python nel file 'dnfupdate-security', salvalo

Esecuzione 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
"più perfetto"?
don_crissti,

Questa soluzione più perfetta dà un IndentationError (perché import osnon è all'inizio della riga (anche se rimuovi i 3 spazi iniziali da ogni riga). E anche se correggo il tuo rientro incoerente, ottengo un SyntaxError.
Anthon

Dissing vecchie risposte non è qualcosa che dovresti fare. Alcune persone potrebbero pensare la stessa cosa sul tuo codice, cioè fa schifo.
MelBurslan

Tutte le critiche sono accettate positivamente. Ho apportato poche modifiche. Ho testato tutto e dovrebbe funzionare su sistemi basati su fedora / redhat ... Non intendevo dire che il metodo prima non funzionava ma nel mio caso fa schifo ?! :)
LecTos Lacius,

quindi metti i comandi di shell dalla risposta di Tomot negli script Python cambiando dnf upgrade -yin dnf update. Altre differenze sostanziali?
marcin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.