Пакетный менеджер dnf
Обзор
Ссылки по теме
Прокси
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 не является значимым и используется как групповой для установки нужных пакетов при обычном способе установки.