Пакетный менеджер dnf

Материал из sysadm
Перейти к навигации Перейти к поиску

Обзор

Ссылки по теме

Прокси

vi /etc/yum.conf
proxy=http://proxy.domain.ru:3128

Базовые команды

# установка нового пакета
dnf install <packet_name>

# удаление установленного пакета
dnf remove <packet_name>

# проверка обновлений для установленных пакетов
dnf check-update

# установка обновлений для установленных пакетов
dnf update

# список доступных пакетов
dnf list

# список установленных пакетов
dnf list installed

Работа с репозиториями

Вывод списка включенных репозиториев

dnf repolist

Вывод списка всех репозиториев с отображением состояния включено/отключено

dnf repolist --all

Включение репозитория powertools

dnf config-manager --enable powertools
# или так
dnf config-manager --set-enable powertools

Выключение репозитория powertools

dnf config-manager --disable powertools
# или так
dnf config-manager --set-disable powertools

Добавление нового репозитория

dnf config-manager --add-repo <file | URL>


Обратите внимание, что имена репозиториев необходимо указывать в точности как они выводятся командой dnf repolist --all

Популярные репозитории Centos 8

epel, epel-modular

dnf install epel-release

powertools

dnf config-manager --enable powertools

rpmfusion-free-updates

dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
dnf install https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm

remi-modular, remi-safe

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

okay

dnf install http://repo.okay.com.mx/centos/8/x86_64/release/okay-release-1-3.el8.noarch.rpm

Модули

Обзор

Модуль - это специальная группа пакетов, представляющая определенное приложение. Модуль имеет имя и может содержать в себе несколько независимых потоков (Streams).

Поток (Stream) - это набор пакетов, представляющих определенную версию приложения. Поток может содержать несколько профилей установки приложения.

Профиль - это способ установки приложения под соответствующую задачу, он определяет какие пакеты ставить и как настраивать.

Потоки могут иметь атрибуты

  • [d]efault - поток по умолчанию
  • [e]nable - включенный поток
  • [x]disabled - если модуль выключен, то все его потоки отображаются как выключенные

Профили могут иметь атрибуты

  • [d]efault - профиль по умолчанию
  • [i]nstalled - установленный профиль

Важные факты:

  • Атрибуты default определены в репозитории и не могут быть изменены пользователем.
  • Модуль может иметь потоки в нескольких репозиториях
  • Модуль может быть включен либо командой enable, либо автоматически при установке потока.
  • Если в модуле есть включенный поток, то возможна установка только этого потока.
  • Сброс модуля (команда reset) приводит к снятию атрибута enabled с потока и атрибута installed с профиля, при этом фактически пакеты не удаляются, поэтому перед командой reset очень желательно удалять установленный поток (команда remove)
  • Неаккуратное использование команды reset может привести к установке старой версии поверх новой (downgrade), что не для всех пакетов может быть корректно выполнено.
  • Не модульная установка модуля включает и устанавливает поток с атрибутом [d]efault, но не устанавливает атрибут [i]nstalled для профиля установки.

Базовые команды

dnf module list    [NAME][:STREAM]
dnf module info    [NAME][:STREAM]
dnf module install NAME[:STREAM][/PROFILE]
dnf module update  NAME
dnf module remove  NAME
dnf module enable  NAME[:STREAM]
dnf module reset   NAME
dnf module disable NAME

Примеры

Выведем список потоков модуля php

[root@myhost]# dnf module list php
CentOS-8 - AppStream
Name                      Stream                          Profiles                                        Summary                                    
php                       7.2 [d][e]                      common [d], devel, minimal                      PHP scripting language                     
php                       7.3                             common [d], devel, minimal                      PHP scripting language                     

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name                      Stream                          Profiles                                        Summary                                    
php                       remi-7.2                        common [d], devel, minimal                      PHP scripting language                     
php                       remi-7.3                        common [d], devel, minimal                      PHP scripting language                     
php                       remi-7.4                        common [d], devel, minimal                      PHP scripting language                     
php                       remi-8.0                        common [d], devel, minimal                      PHP scripting language                     

Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Здесь мы видим, что модуль php имеет 2 потока в репозитории AppStream и 4 потока в репозитории Remi, включен поток 7.2.

Список потоков не отображает точные версии пакетов. Посмотрим подробнее на пакеты модуля php.

# список всех пакетов php, включая пакеты в неактивных модулях
dnf repoquery --disable-modular-filtering php

# подробная информация о потоке php:remi-7.4 и его пакетах
dnf module info php:remi-7.4

Установим php обычным способом

dnf install php

Наблюдаем, что установился набор пакетов php, соответствующих версии 7.2.

Сбросим поток 7.2 и включим поток remi-7.4

dnf module reset  php:7.2
dnf module enable php:remi-7.4

Проверяем список потоков модуля php, видим что признак [e] переключился на поток remi-7.4. Проверяем список установленных пакетов и видим, что ничего не изменилось.

Выполняем обычное обновление php

dnf update php

Видим, что все связанные с php пакеты версии 7.2 удалены и установлены соответствующие пакеты версии 7.4 из репозитория Remi.

Можно также заметить, что в списке потоков php нет признака [i], потому что мы устанавливали пакеты обычным не модульным способом.

Если устанавливать php как модуль, то [i] будет отображаться напротив соответствующего профиля установки.

dnf module install php
dnf module list php
CentOS-8 - AppStream
Name                      Stream                          Profiles                                        Summary                                    
php                       7.2 [d]                         common [d], devel, minimal                      PHP scripting language                     
php                       7.3                             common [d], devel, minimal                      PHP scripting language                     

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name                      Stream                          Profiles                                        Summary                                    
php                       remi-7.2                        common [d], devel, minimal                      PHP scripting language                     
php                       remi-7.3                        common [d], devel, minimal                      PHP scripting language                     
php                       remi-7.4 [e]                    common [d] [i], devel, minimal                  PHP scripting language                     
php                       remi-8.0                        common [d], devel, minimal                      PHP scripting language                     

Подсказка: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Видим, что признак [i] появился напротив профиля common.

Если выведем список установленных пакетов, то увидим связанные с php пакеты, но пакета php нет. Предполагаю, что пакет php не является значимым и используется как групповой для установки нужных пакетов при обычном способе установки.