dnf еквівалент "yum update - безпека"


13

yum update --securityвстановлює лише оновлення безпеки. Я думаю, що це розширення від плагіна yum-security.

Чи існує еквівалентна команда dnf? (dnf замінив yum у Fedora 22)


1
JFTR: по bugzilla.redhat.com/show_bug.cgi?id=1234930 , ця функція тільки доступна в ДНФ 2 і майбутня Fedora 26
Сержіо

1
Тепер оновлення dnf --enablerepo = update-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
  • - оновити силу репо синхронізації
  • -встановлю автоматично
  • Удосконалений / фіксований метод підрахунку 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"
Вестон Гангер

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цикл for для циклу cli або bash. Я все ще настійно рекомендую переглянути оновлення безпеки, але ви завжди можете дозволити перейти до -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 - оновити

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', збережіть його

Виконання 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

Це більш досконале рішення дає IndentaError (тому що import osвін знаходиться не на початку рядка (навіть якщо ви видалите 3 провідні пробіли з кожного рядка). І навіть якщо я виправляю ваше непослідовне відступ, я отримую SyntaxError.
Anthon,

Відмова від старих відповідей - це не те, що слід робити. Деякі люди можуть думати те саме про ваш код, тобто це смокче.
Мельбурслан

Усі критики сприймаються позитивно. Я зробив кілька правок. Я протестував все, і це повинно працювати на системах, що базуються на Fedora / Redhat ... Я не хотів сказати, що метод раніше не працював, але в моєму випадку відстій ?! :)
LecTos Lacius

тому ви поміщаєте команди оболонки з відповіді Томота в сценарії python, що змінюються dnf upgrade -yна dnf update. Будь-які інші істотні відмінності?
marcin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.