dnf odpowiednik „yum update - security”


13

yum update --securityinstaluje tylko aktualizacje zabezpieczeń. Myślę, że to rozszerzenie wtyczki yum-security.

Czy istnieje równoważne polecenie dnf? (dnf zastąpił yum w Fedorze 22)


1
JFTR: autor: bugzilla.redhat.com/show_bug.cgi?id=1234930 , ta funkcja jest dostępna tylko w DNF 2 i nadchodzącej Fedorze 26
Sérgio

1
Teraz aktualizacja dnf --enablerepo = aktualizacje-testowanie - doradztwo = FEDORA-2019-7cafbe66ba
Sérgio

Odpowiedzi:


7

Na podstawie 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 instalują się automatycznie
  • SECURITY_UPDATES_NUM poprawiona / ustalona metoda zliczania działa dla 0/1 / nieskończoności

1
Tak samo jak jedna wkładka bash ( -yi --refreshmogą być dodawane)up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin

Jako alias alias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
jednoliniowy

10

Możesz użyć DNF-Automatic z trzema ustawieniami:

apply_updates = yes
download_updates = yes
upgrade_type = security

(Domyślny plik konfiguracyjny to /etc/dnf/automatic.conf)

lub używając:

dnf updateinfo list security

aby uzyskać wszystkie dostępne aktualizacje, a następnie zaktualizuj je ręcznie.


1

Możesz umieścić dnf updateinfo list updates securitypętlę for w skrypcie cli lub bash. Nadal bardzo polecam przejrzenie aktualizacji zabezpieczeń, ale zawsze możesz zezwolić na przekazanie -ypolecenia dodnf update

to działa dla mnie w zależności od niektórych potrzeb:

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

Lub nieco krótszy z awk (pamiętaj, że to nie działa z --refresh)

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

dla 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

Proponowane wcześniej metody nie spełniły się w moim przypadku. Możesz wypróbować ten i być może jest on doskonalszy. Utwórz plik o nazwie „dnfupdate-security”, następnie wklej poniżej wiersze pytona lub uruchom polecenie cmd:

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

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

Następnie wklej kod python do pliku „dnfupdate-security”, zapisz go

Wykonanie 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
„doskonalszy”?
don_crissti

To bardziej idealne rozwiązanie daje błąd IndentationError (ponieważ import osnie ma go na początku wiersza (nawet jeśli usuniesz 3 początkowe spacje z każdej linii). I nawet jeśli poprawię twoje niespójne wcięcie, otrzymam błąd SyntaxError.
Anthon

Odrzucanie starych odpowiedzi nie jest czymś, co powinieneś zrobić. Niektórzy ludzie mogą myśleć tak samo o twoim kodzie, tzn. Jest do bani.
MelBurslan,

Wszystkie krytyki zostały przyjęte pozytywnie. Zrobiłem kilka zmian. Przetestowałem wszystko i powinno działać na systemach opartych na fedora / redhat ... Nie chciałem powiedzieć, że metoda wcześniej nie działała, ale w moim przypadku jest do kitu ?! :)
LecTos Lacius

więc wstawiasz polecenia powłoki z odpowiedzi Tomota do skryptów pythonowych zmieniających się dnf upgrade -yna dnf update. Jakieś inne istotne różnice?
marcin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.