เทียบเท่า dnf ของ“ yum update --security”


13

yum update --securityติดตั้งเฉพาะการปรับปรุงความปลอดภัย ฉันคิดว่ามันเป็นส่วนเสริมจากปลั๊กอินความปลอดภัยยำ

มีคำสั่ง dnf ที่เทียบเท่าหรือไม่ (dnf แทนที่ yum ใน Fedora 22)


1
JFTR: โดยbugzilla.redhat.com/show_bug.cgi?id=1234930คุณลักษณะนี้มีเฉพาะใน DNF 2 และ Fedora 26 ที่กำลังจะมาถึง
Sérgio

1
ตอนนี้ dnf อัปเกรด --enablerepo = อัปเดตการทดสอบ --advisory = FEDORA-2019-7cafbe66ba
Sérgio

คำตอบ:


7

อ้างอิงจาก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
  • - รีเฟรชแรง repo ซิงค์
  • -ติดตั้งโดยอัตโนมัติ
  • SECURITY_UPDATES_NUMวิธีการนับ / กลั่นแบบคงที่ทำงานได้กับ 0/1 / อินฟินิตี้

1
เช่นเดียวกับหนึ่งซับใน bash ( -yและ--refreshสามารถเพิ่มได้):up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin

เป็นนามแฝงแบบหนึ่งซับalias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
Weston Ganger

10

คุณสามารถใช้dnf-automaticด้วยการตั้งค่าสามแบบ:

apply_updates = yes
download_updates = yes
upgrade_type = security

(ไฟล์กำหนดค่าเริ่มต้นคือ/etc/dnf/automatic.conf)

หรือใช้:

dnf updateinfo list security

เพื่อรับการอัปเดตที่มีอยู่ทั้งหมดจากนั้นอัปเดตด้วยตนเอง


1

คุณสามารถใส่dnf updateinfo list updates securityในห่วงสำหรับสคริปต์ cli หรือทุบตี ฉันยังคงแนะนำอย่างยิ่งให้ตรวจสอบการอัปเดตความปลอดภัย แต่คุณสามารถอนุญาตให้ใช้-yคำสั่งในการdnf update

นี่คือสิ่งที่เหมาะกับฉันขึ้นอยู่กับความต้องการ:

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

หรือสั้นกว่าเล็กน้อยด้วย awk (โปรดทราบว่าวิธีนี้ใช้ไม่ได้กับ --refresh)

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

สำหรับ 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

วิธีการที่เสนอมาก่อนไม่เป็นที่พอใจในกรณีของฉัน คุณสามารถลองอันนี้และมันอาจจะสมบูรณ์แบบกว่านี้ สร้างไฟล์ที่มีชื่อ "dnfupdate-security" แล้ววางสายไพ ธ อนด้านล่างหรือรัน cmd:

cmd1: sudo touch / usr / bin / dnfupdate-security && sudo chmod + x / usr / bin / dnfupdate- ความปลอดภัย

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

ถัดไปวางรหัสหลามลงในไฟล์ 'dnfupdate-security', บันทึกไว้

การดำเนินการ 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
"สมบูรณ์แบบมากขึ้น" หรือไม่
don_crissti

นี้โซลูชั่นที่สมบูรณ์แบบมากขึ้นให้ IndentationError (เพราะimport osอยู่ในไม่ได้อยู่ที่จุดเริ่มต้นของเส้น (แม้ว่าคุณจะลบช่องว่างนำ 3 จากแต่ละบรรทัด) และแม้ว่าผมจะแก้ไขเยื้องไม่สอดคล้องกันของฉันได้รับ SyntaxError ได้..
โธ

การทิ้งคำตอบเก่าไม่ใช่สิ่งที่คุณควรทำ บางคนอาจคิดแบบเดียวกันกับรหัสของคุณนั่นคือมันแย่มาก
MelBurslan

คำวิจารณ์ทั้งหมดได้รับการยอมรับในเชิงบวก ฉันแก้ไขเสร็จแล้ว ฉันทดสอบทั้งหมดแล้วและควรทำงานบนระบบที่อิงกับ fedora / redhat ... ฉันไม่ได้ตั้งใจจะพูดว่าวิธีการก่อนหน้านี้ไม่ทำงาน แต่ในกรณีของฉันมันแย่มาก! :)
LecTos Lacius

เพื่อให้คุณใส่คำสั่งเชลล์จากคำตอบ Tomot เข้าไปในสคริปต์หลามที่เปลี่ยนแปลงไปdnf upgrade -y dnf updateมีความแตกต่างอื่น ๆ อีกมากมาย?
marcin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.