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.