Dnf – это менеджер пакетов по умолчанию в семействе дистрибутивов Red Hat, которое включает в себя Fedora, Red Hat Enterprise Linux и все его клоны.
Это преемник Yum, и действительно, использование команды yum в последних версиях дистрибутивов, упомянутых выше, является просто еще одним способом вызова dnf.
В Dnf есть множество полезных функций и плагинов, которые помогают нам устанавливать, обновлять и удалять программное обеспечение, упакованное в формате «.rpm».
В этом руководстве мы исследуем группы пакетов dnf и узнаем, как с ними обращаться.
Что такое группа пакетов?
Начнем с определения, что такое группа пакетов.
Группа пакетов – это, по сути, «виртуальный» пакет.
Здесь мы называем его «виртуальным», потому что он не предоставляет конкретное программное обеспечение как таковое, но ссылается на другие «реальные» пакеты.
Мы можем использовать группы пакетов для установки «набора» пакетов с помощью одной команды.
Скажем, например, нам нужно установить пакеты, необходимые для работы с виртуальными машинами kvm: вместо того, чтобы устанавливать каждый пакет по отдельности, мы можем просто установить группу пакетов «virtualization», что приведет к установке всего необходимого программного обеспечения в нашей системе. .
Получение информации о группе пакетов
Перед установкой группы пакетов мы можем посмотреть, какие пакеты она будет содержать.
Для выполнения этой задачи все, что нам нужно сделать, это использовать команду dnf group info, передав имя группы пакетов, которую мы хотим проверить, в качестве ее аргумента.
Например, чтобы увидеть, что содержат группы пакетов @virtualization, мы должны запустить:
$ dnf group info virtualization
Вот результат выполнения приведенной выше команды в системе Fedora 34:
Group: Virtualization
Description: These packages provide a graphical virtualization environment.
Mandatory Packages:
virt-install
Default Packages:
libvirt-daemon-config-network
libvirt-daemon-kvm
qemu-kvm
virt-manager
virt-viewer
Optional Packages:
libguestfs-tools
python3-libguestfs
virt-top
Мы можем увеличить подробность dsdjlf команды и получить более подробную информацию, вызвав ее с параметром -v (сокращение от –verbose):
Group: Virtualization
Group-Id: virtualization
Description: These packages provide a graphical virtualization environment.
Mandatory Packages:
virt-install-3.2.0-3.fc34.noarch @System
Default Packages:
libvirt-daemon-config-network-7.0.0-4.fc34.x86_64 @System
libvirt-daemon-kvm-7.0.0-4.fc34.x86_64 @System
qemu-kvm-2:5.2.0-7.fc34.x86_64 @System
virt-manager-3.2.0-3.fc34.noarch @System
virt-viewer-9.0-3.fc34.x86_64 @System
Optional Packages:
libguestfs-tools
python3-libguestfs-1:1.45.4-1.fc34.x86_64 updates
virt-top-1.0.9-17.fc34.x86_64 fedora
Первое, что мы можем заметить в выводе, – это имя и идентификатор группы пакетов, в данном случае «Virtualization» и «virtualization» соответственно.
После них мы можем прочитать краткое описание группы пакетов и ее назначения и, наконец, фактический список пакетов, включенных в нее.
Мы видим, что пакеты разделены на три основных раздела:
- Mandatory
- Default
- Optional
Пакеты, помеченные как «Mondatory» и «Default», будут устанавливаться всегда, а пакеты, помеченные как «Optional», будут установлены только в том случае, если они указаны.
Для полноты картины отметим, что существует еще один раздел, который в данном случае не используется: “Conditional”.
Пакеты, входящие в раздел «Conditional», устанавливаются только в том случае, если требуемые им пакеты уже установлены.
В некоторых случаях некоторые пакеты, входящие в группу пакетов, могут уже присутствовать в системе.
Когда мы запускаем команду group info с параметром -v, как мы делали выше, пакеты, которые являются частью группы и еще не установлены, будут легко различимы, поскольку они будут выделены в списке.
Список всех доступных групп пакетов
Чтобы вывести список всех доступных групп пакетов в репозиториях нашего дистрибутива, все, что нам нужно сделать, это выполнить следующую команду:
$ dnf group list
Приведенная выше команда возвращает список всех известных групп.
Однако мы можем добавить ряд опций, чтобы изменить поведение команды.
По умолчанию, так называемые скрытые группы не включены в список.
Чтобы они отображались, все, что нам нужно сделать, это добавить параметр –hidden:
$ dnf group list --hidden
Если мы хотим получить только список всех установленных групп пакетов, вместо этого мы можем использовать параметр –installed:
$ dnf group list --installed
Установка, обновление и удаление группы пакетов
Итак, как установить группу пакетов?
Есть два основных способа: мы можем указать имя пакета с префиксом @ или использовать команду dnf group install, как мы уже увидели
Приведенные ниже команды эквивалентны:
$ sudo dnf install @virtualization
$ sudo dnf group install virtualization
Как мы уже говорили, по умолчанию устанавливаются только пакеты «Mondatory» и «Default».
Однако это поведение по умолчанию можно изменить с помощью параметра dnf group_package_types либо из командной строки, либо в файле конфигурации dnf.
Приведем пример.
Предположим, мы хотим установить только те пакеты, которые являются частью «Mondatory» раздела группы пакетов, мы могли бы выполнить следующую команду:
$ sudo dnf --setopt=group_package_types="mandatory" group install Virtualization
[main]
# Install only Mandatory packages from package groups
group_package_types=mandatory
Если мы просто хотим, чтобы были включены пакеты, включенные в раздел «Optional» группы пакетов, мы также могли бы просто добавить флаг командной строки –with-optional при установке группы пакетов:
$ sudo dnf group install --with-optional virtualization
У нас также может быть возможность обновить группу пакетов.
Когда мы это сделаем, все пакеты, которые являются частью группы, будут обновлены вместе с самой группой пакетов: это потенциально может привести к установке новых пакетов, если они были добавлены в группу, или удалению, если они не являются больше частью группы, и они не были явно установлены пользователем.
Чтобы обновить группу пакетов, мы используем команду group upgrade, поэтому, например, для обновления пакета «Virtualization» мы должны запустить:
$ sudo dnf group upgrade virtualization
$ sudo dnf group remove virtualization
Заключение
В этом руководстве мы узнали о группах пакетов.
Мы увидели, как получить информацию о конкретной группе пакетов в дистрибутивах, использующих dnf в качестве диспетчера пакетов, таких как Fedora и Rhel, как пакеты, входящие в группу пакетов, делятся на разделы, какие из них устанавливаются по умолчанию, и как мы можем изменить это поведение.
Наконец, мы узнали, как установить, обновить и удалить группу пакетов.