「yum update --security」に相当するdnf


13

yum update --securityセキュリティ更新プログラムのみをインストールします。yum-securityプラグインの拡張機能だと思います。

同等のdnfコマンドはありますか?(dnfはFedora 22のyumに置き換わりました)


1
JFTR:bugzilla.redhat.com/show_bug.cgi ?id=1234930により、この機能はDNF 2および今後のFedora 26でのみ利用可能です
セルジオ

1
今DNF --enablerepo = --advisory = FEDORA-2019-7cafbe66baアップデートテストのアップグレード
セルジオ

回答:


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
  • -リフレッシュ force repo sync
  • -y自動的にインストールします
  • SECURITY_UPDATES_NUMの洗練された/修正されたカウント方法、0/1 /無限大で動作

1
bashでワンライナーと同じ(-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"
ウェストンガンガー

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

次に、Pythonコードを「dnfupdate-security」ファイルに貼り付けて保存します

実行コマンド: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を得る。。
Anthonの

古い答えを消すことはあなたがすべきことではありません。一部の人々はあなたのコードについて同じことを考えるかもしれません。
メルバースラン

すべての批評は肯定的に受け入れられました。編集はほとんどしませんでした。すべてをテストしましたが、fedora / redhatベースのシステムで動作するはずです...前にメソッドが動作しなかったと言うつもりはありませんでしたが、私の場合は吸うのですか?:)
LecTos Lacius

そのため、Tomotの回答のシェルコマンドをに変更dnf upgrade -yするpythonスクリプトに入れますdnf update。他に大きな違いはありますか?
-marcin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.