📦 Как работать с группами пакетов dnf

by itisgood

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
Если мы не хотим указывать эту опцию каждый раз при запуске команды, мы можем установить ее навсегда в файле конфигурации dnf, /etc/dnf/dnf.conf:
[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
Dnf также предоставляет команду для удаления установленной группы пакетов: group remove.
Команда удалит все пакеты, которые являются частью группы из операционной системы, за исключением тех, которые являются частью другой группы пакетов, или тех, которые были явно установлены пользователем.
Чтобы удалить группу пакетов «Virtualization», мы должны запустить:
$ sudo dnf group remove virtualization

Заключение

В этом руководстве мы узнали о группах пакетов.

Мы увидели, как получить информацию о конкретной группе пакетов в дистрибутивах, использующих dnf в качестве диспетчера пакетов, таких как Fedora и Rhel, как пакеты, входящие в группу пакетов, делятся на разделы, какие из них устанавливаются по умолчанию, и как мы можем изменить это поведение.

Наконец, мы узнали, как установить, обновить и удалить группу пакетов.

You may also like

Leave a Comment