dnf equivalente a "yum update --security"


13

yum update --securityinstala solo actualizaciones de seguridad. Creo que es una extensión del complemento yum-security.

¿Hay un comando dnf equivalente? (dnf reemplazó yum en Fedora 22)


1
JFTR: por bugzilla.redhat.com/show_bug.cgi?id=1234930 , esta función solo está disponible en DNF 2 y el próximo Fedora 26
Sérgio

1
Ahora actualización dnf --enablerepo = actualizaciones-pruebas - asesoría = FEDORA-2019-7cafbe66ba
Sérgio

Respuestas:


7

Basado en 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 instalar automáticamente
  • SECURITY_UPDATES_NUM método de conteo refinado / fijo, funciona para 0/1 / infinito

1
Lo mismo que one-liner en bash ( -yy --refreshse puede agregar):up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin

Como un alias de una sola líneaalias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
Weston Ganger

10

Puede usar dnf-automatic con tres configuraciones:

apply_updates = yes
download_updates = yes
upgrade_type = security

(El archivo de configuración predeterminado es /etc/dnf/automatic.conf)

o usando:

dnf updateinfo list security

para obtener todas las actualizaciones disponibles, luego actualícelas manualmente.


1

Puede poner el dnf updateinfo list updates securitybucle for en el script cli o bash. Todavía le recomiendo revisar las actualizaciones de seguridad, pero siempre puede permitir que agregue el -ycomando paradnf update

Esto es lo que funciona para mí dependiendo de algunas necesidades:

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

O un poco más corto con awk (tenga en cuenta que esto no funciona con --refresh)

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

por 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

Los métodos propuestos anteriormente no satisfacían en mi caso. Puedes probar este y quizás sea más perfecto. Cree un archivo con el nombre "dnfupdate-security" y luego pegue las líneas de Python a continuación o ejecute cmd:

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

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

Luego pegue el código de Python en el archivo 'dnfupdate-security', guárdelo

Ejecución 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
"más perfecto" ?
don_crissti

Esta solución más perfecta da un IndentationError (porque import osno está al principio de la línea (incluso si elimina los 3 espacios iniciales de cada línea). E incluso si corrijo su sangría inconsistente, obtengo un SyntaxError.
Anthon

Desaprobar viejas respuestas no es algo que debas hacer. Algunas personas pueden pensar lo mismo acerca de su código, es decir, es una mierda.
MelBurslan

Toda crítica es aceptada positivamente. Hice algunas ediciones. Lo probé todo y debería funcionar en sistemas basados ​​en fedora / redhat ... ¡No quise decir que el método anterior no funcionó, pero en mi caso apesta! :)
LecTos Lacius

así que pones comandos de shell de la respuesta de Tomot en scripts de python que cambian dnf upgrade -ya dnf update. ¿Alguna otra diferencia sustancial?
marcin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.