“yum update --security”에 해당하는 dnf


13

yum update --security보안 업데이트 만 설치합니다. 나는 그것이 yum-security 플러그인의 확장이라고 생각합니다.

동등한 dnf 명령이 있습니까? (페도라 22에서 dnf는 yum을 대체했습니다)


1
JFTR : bugzilla.redhat.com/show_bug.cgi?id=1234930 으로이 기능은 DNF 2 및 다음 Fedora 26
Sérgio

1
이제 dnf 업그레이드 --enablerepo = updates-testing --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 동기화
  • -y 자동 설치
  • SECURITY_UPDATES_NUM 세분화 / 고정 카운팅 방법, 0 / 1 / 무한대에서 작동

1
동일하게는 떠들썩한 파티에서 한 줄 ( -y그리고이 --refresh첨가 될 수있다) :up=$(sudo dnf -q updateinfo list sec | awk '{print $3}'); [[ $up ]] && sudo dnf upgrade $up
마르신

단일 라이너 별칭으로alias security-update="pkgs=\$(sudo dnf --refresh -q updateinfo list sec | awk '{print \$3}'); [[ \$pkgs ]] && sudo dnf upgrade -y \$pkgs"
Weston Ganger

10

3 가지 설정 으로 dnf-automatic 을 사용할 수 있습니다 .

apply_updates = yes
download_updates = yes
upgrade_type = security

(기본 구성 파일은 /etc/dnf/automatic.conf)

또는 사용 :

dnf updateinfo list security

사용 가능한 모든 업데이트를 얻으려면 수동으로 업데이트하십시오.


1

dnf updateinfo list updates securitycli 또는 bash 스크립트에서 for 루프를 넣을 수 있습니다 . 여전히 보안 업데이트를 검토 할 것을 강력히 권장하지만 항상 다음 -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"인 파일을 작성한 다음 아래에 python 행을 붙여 넣거나 cmd를 실행하십시오.

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

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

이보다 완벽한 솔루션은 import os줄의 시작 부분에 없기 때문에 (각 줄에서 3 개의 선행 공백을 제거하더라도) IndentationError를 제공합니다. 일관성없는 들여 쓰기를 수정하더라도 SyntaxError가 발생합니다.
Anthon

오래된 답변을 파헤치는 것은 당신이해야 할 일이 아닙니다. 어떤 사람들은 코드에 대해 같은 것을 생각할 수도 있습니다.
MelBurslan

모든 비평은 긍정적으로 받아 들여졌습니다. 편집을 거의하지 않았습니다. 나는 모든 것을 테스트했고 그것은 페도라 / 레드햇 기반 시스템에서 작동해야합니다 ... 나는 전에 작동하지 않았지만 내 경우에는 방법을 말하는 것을 의미하지 않습니까?! :)
LecTos Lacius

그래서 Tomot의 답변에서 셸 명령을 python 스크립트로 변경 dnf upgrade -y하여로 변경 합니다 dnf update. 다른 실질적인 차이점이 있습니까?
marcin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.