27 команд ‘DNF’ (форк Yum) для управления RPM-пакетами в Linux

DNF также известный как Dandified YUM – это следующее поколение менеджера пакетов для дистрибутивов, основанных на RPM. Он был впервые представлен в Fedora 18 и заменил утилиту YUM в последних выпусках Fedora 22.

DNF стремится улучшить узкие места YUM, такие как производительность, использование памяти, разрешение зависимостей, скорость и многие другие факторы. DNF выполняет управление пакетами с использованием RPM, библиотеки libsolv и hawkey. Хотя он не устанавливается по умолчанию в CentOS и RHEL 7, вы можете использовать yum, dnf и использовать его рядом с yum.

Вы можете ознакомиться с дополнительной информацией о DNF здесь:

  1. Причины замены Yum на DNF

Самый последний стабильный выпуск DNF – это 1.0 (на момент написания поста), который был выпущен 11 мая 2015 года. Он (и все предыдущие версии DNF) написаны в основном на Python и выпущены под лицензией GPL v2.

Установка DNF

DNF не доступен в стандартном репозитории RHEL/CentOS 7. Однако Fedora 22 поставляется с официально реализованным DNF.

Для установки DNF на системах RHEL/CentOS необходимо сначала установить и включить репозиторий epel-release.

# yum install epel-release
OR
# yum install epel-release -y

Хотя использование ключа ‘-y‘ с yum некорректно, так как рекомендуется видеть, что устанавливается в вашей системе. Однако, если вам это не важно, вы можете использовать ‘-y’ с yum для автоматической установки всего без участия пользователя.

Затем установите пакет DNF с помощью команды yum из репозитория epel-release.

# yum install dnf

После успешной установки dnf, пришло время показать вам 27 практических примеров использования команд dnf с примерами, которые помогут вам управлять пакетами в дистрибутиве на основе RPM легко и эффективно.

1. Проверьте версию DNF

Проверьте версию установленного DNF на вашей системе.

# dnf --version

2. Список включенных репозиториев DNF

Опция ‘repolist‘ с командой dnf покажет все включенные репозитории в вашей системе.

# dnf repolist

3. Список всех включенных и отключенных репозиториев DNF

Опция ‘repolist all‘ выведет все включенные/отключенные репозитории в вашей системе.

# dnf repolist all

4. Список всех доступных и установленных пакетов с использованием DNF

Команда “dnf list” выведет все доступные пакеты из всех репозиториев и установленные пакеты на вашей системе Linux.

# dnf list

5. Список всех установленных пакетов с использованием DNF

Команда “dnf list” показывает все доступные/установленные пакеты из всех репозиториев. Однако у вас есть возможность перечислить только установленные пакеты, используя опцию “list installed“, как показано ниже.

# dnf list installed

6. Перечислите все доступные пакеты с помощью DNF

Аналогично, опция “list available” перечислит все пакеты, доступные для установки из всех включенных репозиториев.

# dnf list available

7. Поиск пакета с помощью DNF

Если у вас нет представления о пакете, который вы хотите установить, в такой ситуации вы можете использовать опцию ‘search’ с командой dnf для поиска пакета, который соответствует слову или строке (скажем, nano).

# dnf search nano

8. Посмотреть, что предоставляет файл/подпакет?

Опция dnf “предоставляет” находит имя пакета, предоставляющего конкретный файл/подпакет. Например, если вы хотите узнать, что предоставляет ‘/bin/bash’ на вашей системе?

# dnf provides /bin/bash

9. Получить сведения о пакете с помощью DNF

Допустим, вы хотите узнать информацию о пакете перед его установкой на систему, вы можете использовать переключатель “info”, чтобы получить подробную информацию о пакете (скажем, nano), как показано ниже.

# dnf info nano

10. Установить пакет с помощью DNF

Чтобы установить пакет с именем nano, просто выполните нижеприведенную команду, она автоматически разрешит и установит все необходимые зависимости для пакета nano.

# dnf install nano

11. Обновление пакета с использованием DNF

Вы можете обновить только конкретный пакет (например, systemd) и оставить все остальное на системе нетронутым.

# dnf update systemd

12. Проверка обновлений системы с использованием DNF

Проверьте обновления для всех пакетов системы, установленных в систему, просто как.

# dnf check-update

13. Обновление всех системных пакетов с использованием DNF

Вы можете обновить всю систему, включая все установленные пакеты, с помощью следующих команд.

# dnf update
OR
# dnf upgrade

14. Удаление пакета с использованием DNF

Чтобы удалить или стереть любой ненужный пакет (например, nano), вы можете использовать переключатель «remove» или «erase» с командой dnf для его удаления.

# dnf remove nano
OR
# dnf erase nano

15. Удаление сиротских пакетов с использованием DNF

Те пакеты, которые были установлены для удовлетворения зависимостей, могут быть бесполезны, если не используются другими приложениями. Чтобы удалить эти сиротские пакеты, выполните следующую команду.

# dnf autoremove

16. Удаление кэшированных пакетов с использованием DNF

A lot of time we encounter out-of-date headers and unfinished transactions which results into error while executing dnf. We may clean all the cached packages and headers containing remote package information simply by executing.

# dnf clean all

17. Получение справки о конкретной команде DNF

Вы можете получить справку по любой конкретной команде dnf (например, clean) просто выполнением следующей команды.

# dnf help clean

18. Перечисление всех команд и параметров DNF

Чтобы получить список всех доступных команд и параметров dnf, просто введите.

# dnf help

19. Просмотр истории DNF

Вы можете вызвать историю dnf, чтобы посмотреть список уже выполненных команд dnf. Таким образом, вы можете быть в курсе того, что было установлено/удалено с отметкой времени.

# dnf history

20. Перечислить все групповые пакеты

Команда “dnf grouplist” выведет все доступные или установленные пакеты, если ничего не указано, она перечислит все известные группы.

# dnf grouplist

21. Установка группового пакета с помощью DNF

Для установки группы пакетов, объединенных в групповой пакет (скажем, Образовательное программное обеспечение), просто как.

# dnf groupinstall 'Educational Software'

22. Обновление группового пакета

Давайте обновим групповой пакет (скажем, Образовательное программное обеспечение) выполнив следующую команду.

# dnf groupupdate 'Educational Software'

23. Удаление группового пакета

Мы можем удалить групповой пакет (скажем, Образовательное программное обеспечение) как.

# dnf groupremove 'Educational Software'

24. Установка пакета из конкретного репозитория

DNF позволяет установить любой конкретный пакет (скажем, phpmyadmin) из репо (epel) просто как,

# dnf --enablerepo=epel install phpmyadmin

25. Синхронизация установленных пакетов с стабильным релизом

Команда “dnf distro-sync” предоставит необходимые параметры для синхронизации всех установленных пакетов с самой последней стабильной версией, доступной из любого включенного репозитория. Если не выбран ни один пакет, все установленные пакеты синхронизируются.

# dnf distro-sync

26. Повторная установка пакета

Команда “dnf reinstall nano” переустановит уже установленный пакет (скажем, nano).

# dnf reinstall nano

27. Понижение версии пакета

Опция “downgrade” понизит версию названного пакета (скажем, acpid) до более низкой версии, если это возможно.

# dnf downgrade acpid
Пример вывода
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

Мое наблюдение: DNF не откатывает пакет, как это должно было быть. Это также было сообщено как ошибка.

Вывод

DNF – это передовой менеджер пакетов YUM. Он склонен выполнять много операций автоматически, что, как я считаю, не будет похвалено многими опытными администраторами Linux. В качестве примера:

  1. --skip-broken не распознается DNF, и нет альтернативы.
  2. Нет команды ‘resolvedep‘, однако можно использовать dnf provides.
  3. Нет команды ‘deplist‘ для поиска зависимости пакета.
  4. Если вы исключаете репозиторий, исключение применяется ко всем операциям, в отличие от yum, который исключает эти репозитории только во время установки и обновлений и т. д.

Многие пользователи Linux не довольны тем, как развивается экосистема Linux. Сначала Systemd удалил систему инициализации V, а теперь DNF скоро заменит YUM в Fedora 22, а затем в RHEL и CentOS.

Что вы думаете? Не ценят ли дистрибутивы и вся экосистема Linux своих пользователей и движутся против их воли? Также часто говорят в IT-индустрии: “Почему чинить, если не сломано?”, а ни система инициализации V, ни YUM не сломаны.

На этом пока все. Пожалуйста, делитесь своими ценными мыслями в комментариях ниже. Лайк и поделитесь с нами, помогите нам распространить информацию.

Source:
https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/