dnf eşdeğeri "yum update --security"


13

yum update --securityyalnızca güvenlik güncelleştirmelerini yükler. Bence bu yum-security eklentisinin bir uzantısı.

Eşdeğer bir dnf komutu var mı? (dnf, Fedora 22'de yum'un yerini aldı)


1
JFTR: bugzilla.redhat.com/show_bug.cgi?id=1234930 tarafından , bu özellik yalnızca DNF 2 ve yakında sunulacak Fedora 26
— Sérgio

1
Şimdi dnf yükseltme --enablerepo = güncellemeler-test - TripAdvisory = FEDORA-2019-7cafbe66ba
— Sérgio

Yanıtlar:


7

Göre 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
  • - yenileme gücü repo senkronizasyonu
  • -y otomatik olarak kur
  • SECURITY_UPDATES_NUM rafine / sabit sayma yöntemi, 0/1 / sonsuz için çalışır

1
Bash'taki tek astarla aynı ( -yve --refresheklenebilir):up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
— marcin

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

10

Sen kullanabilirsiniz DNF otomatik üç ayarlarla:

apply_updates = yes
download_updates = yes
upgrade_type = security

(Varsayılan yapılandırma dosyasıdır /etc/dnf/automatic.conf)

veya kullanarak:

dnf updateinfo list security

kullanılabilir tüm güncellemeleri almak için manuel olarak güncelleyin.


1

dnf updateinfo list updates securityCli veya bash betiğine for for döngüsünü koyabilirsiniz . Yine de güvenlik güncelleştirmelerini gözden geçirmenizi önemle tavsiye ederim, ancak -ykomutun her zamandnf update

bazı ihtiyaçlara bağlı olarak benim için çalışan budur:

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

Veya awk ile biraz daha kısa (bunun --refresh ile çalışmadığını unutmayın)

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

bir dnf için --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

Daha önce önerilen yöntemler benim durumumda tatmin etmedi. Bunu deneyebilirsiniz ve belki de daha mükemmeldir. "Dnfupdate-security" adında bir dosya oluşturun, ardından aşağıdaki python satırlarını yapıştırın veya cmd'yi yürütün:

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

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

Sonra python kodunu 'dnfupdate-security' dosyasına yapıştırın, kaydedin

Cmd yürütme: 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
"daha mükemmel" ?
— 16:13, don_crissti

Bu daha mükemmel çözüm bir IndentationError verir (çünkü import ossatırın başında değildir (her satırdaki 3 önde gelen boşluğu kaldırsanız bile) Ve tutarsız girintinizi düzeltsem bile, bir SyntaxError alırım
— Anthon

Eski cevapları çözmek sizin yapmanız gereken bir şey değildir. Bazı insanlar kodunuz hakkında aynı şeyi düşünebilir, yani berbat.
— MelBurslan

Bütün eleştiriler olumlu kabul edildi. Birkaç düzenleme yaptım. Hepsini test ettim ve fedora / redhat tabanlı sistemlerde çalışmalı ... Daha önce işe yaramadığını söylemek istemedim ama benim durumum berbat mı ?! :)
— LecTos Lacius

böylece değişen piton komut içine Tomot cevabı gelen kabuk komutları koymak dnf upgrade -yiçin dnf update. Başka önemli farklılıklar var mı?
— marcin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.