DNF equivalente a "yum update --security"


13

yum update --securityinstala apenas atualizações de segurança. Eu acho que é uma extensão do plugin yum-security.

Existe um comando dnf equivalente? (o dnf substituiu o yum no Fedora 22)


1
JFTR: por bugzilla.redhat.com/show_bug.cgi?id=1234930 , esse recurso está disponível apenas no DNF 2 e no próximo Fedora 26
Sérgio

1
Agora atualização dnf --enablerepo = updates-testing --advisory = FEDORA-2019-7cafbe66ba
Sérgio

Respostas:


7

Baseado em 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 instala automaticamente
  • SECURITY_UPDATES_NUM método de contagem refinado / fixo, funciona para 0/1 / infinito

1
O mesmo que one-liner no bash ( -ye --refreshpode ser adicionado):up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin 05/04

Como um alias de uma linhaalias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
Weston Ganger

10

Você pode usar o dnf-automatic com três configurações:

apply_updates = yes
download_updates = yes
upgrade_type = security

(O arquivo de configuração padrão é /etc/dnf/automatic.conf)

ou usando:

dnf updateinfo list security

para obter todas as atualizações disponíveis, atualize-as manualmente.


1

Você pode colocar o dnf updateinfo list updates security um loop for no script cli ou bash. Eu ainda recomendo revisar as atualizações de segurança, mas você sempre pode ativar o -ycomando paradnf update

é isso que funciona para mim, dependendo de algumas necessidades:

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

Ou um pouco mais curto com o awk (saiba que isso não funciona com --refresh)

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

para um 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

Os métodos propostos anteriormente não eram satisfatórios no meu caso. Você pode tentar este e talvez seja mais perfeito. Crie um arquivo com o nome "dnfupdate-security" e cole as linhas python abaixo ou execute o cmd:

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

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

Em seguida, cole o código python no arquivo 'dnfupdate-security', salve-o

Cmd de execução: 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
"mais perfeito" ?
31516 don_crissti

Esta solução mais perfeita fornece um IndentationError (porque import osnão está no início da linha (mesmo que você remova os três espaços à esquerda de cada linha) .E mesmo se eu corrigir seu recuo inconsistente, recebo um SyntaxError.
Anthon

Dissing respostas antigas não é algo que você deve fazer. Algumas pessoas podem pensar a mesma coisa sobre o seu código, ou seja, é péssimo.
MelBurslan

Toda crítica é aceita positivamente. Fiz algumas edições. Eu testei tudo e ele deve funcionar em sistemas baseados em fedora / redhat ... eu não quis dizer que o método antes não funcionou, mas no meu caso é péssimo ?! :)
LecTos Lacius

então você coloca comandos shell da resposta do Tomot nos scripts python mudando dnf upgrade -ypara dnf update. Alguma outra diferença substancial?
21416
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.