tương đương với dnf của cập nhật yum - bảo mật


13

yum update --securitychỉ cài đặt cập nhật bảo mật. Tôi nghĩ đó là một phần mở rộng từ plugin bảo mật yum.

Có một lệnh dnf tương đương? (dnf thay thế yum trong Fedora 22)


1
JFTR: bởi bugzilla.redhat.com/show_orms.cgi?id=1234930 , tính năng này chỉ khả dụng trong DNF 2 và Fedora 26 sắp tới
Sérgio

1
Bây giờ nâng cấp dnf --enablerepo = cập nhật-thử nghiệm --advisory = FedORA-2019-7cafbe66ba
Sérgio

Câu trả lời:


7

Dựa trên 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 đồng bộ repo lực lượng
  • -y cài đặt tự động
  • SECURITY_UPDATE_NUM phương pháp đếm cố định / tinh chỉnh, hoạt động với giá trị 0/1 / vô cực

1
Giống như một lớp lót trong bash ( -y--refreshcó thể được thêm vào):up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
marcin

Là bí danh một lớp lótalias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
Weston Ganger

10

Bạn có thể sử dụng dnf-Automatic với ba cài đặt:

apply_updates = yes
download_updates = yes
upgrade_type = security

(Tệp cấu hình mặc định là /etc/dnf/automatic.conf)

hoặc sử dụng:

dnf updateinfo list security

để có được tất cả các bản cập nhật có sẵn, sau đó cập nhật chúng theo cách thủ công.


1

Bạn có thể đặt dnf updateinfo list updates securitymột vòng lặp for trên tập lệnh cli hoặc bash. Tôi vẫn khuyên bạn nên xem lại các bản cập nhật bảo mật nhưng bạn luôn có thể cho phép ném -ylệnh vàodnf update

đây là những gì làm việc cho tôi tùy thuộc vào một số nhu cầu:

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

Hoặc ngắn hơn một chút với awk (lưu ý rằng điều này không hoạt động với --refresh)

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

cho một 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

Các phương pháp được đề xuất trước đây không thỏa mãn trong trường hợp của tôi. Bạn có thể thử cái này và nó có lẽ hoàn hảo hơn. Tạo tập tin có tên "dnfupdate-security" sau đó dán các dòng python bên dưới hoặc thực thi cmd:

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

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

Tiếp theo dán mã python vào tệp 'dnfupdate-security', lưu nó

Thực thi 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
"Hoàn hảo hơn"?
don_crissti

Giải pháp hoàn hảo hơn này mang lại một IndentationError (vì import oskhông ở đầu dòng (ngay cả khi bạn loại bỏ 3 khoảng trắng hàng đầu khỏi mỗi dòng). Và ngay cả khi tôi sửa lỗi thụt đầu dòng không nhất quán của mình, tôi vẫn nhận được SyntaxError.
Anthon

Bỏ những câu trả lời cũ không phải là điều bạn nên làm. Một số người có thể nghĩ điều tương tự về mã của bạn, tức là nó rất tệ.
MelBurslan

Tất cả các phê bình được chấp nhận tích cực. Tôi đã thực hiện một vài chỉnh sửa. Tôi đã thử nghiệm tất cả và nó sẽ hoạt động trên các hệ thống dựa trên fedora / redhat ... Tôi không có ý nói phương pháp trước khi không hoạt động nhưng trong trường hợp của tôi là tệ?! :)
LecTos Lacius

vì vậy bạn đặt các lệnh shell từ câu trả lời của Tomot vào các tập lệnh python thay đổi dnf upgrade -ythành dnf update. Bất kỳ sự khác biệt đáng kể khác?
marcin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.