Using the DNF software package manager
DNF is a software package manager that installs, updates, and removes packages on Fedora and is the successor to YUM (Yellow-Dog Updater Modified). DNF makes it easy to maintain packages by automatically checking for dependencies and determines the actions required to install packages. This method eliminates the need to manually install or update the package, and its dependencies, using the rpm command. DNF is now the default software package management tool in Fedora.
Usage
dnf can be used exactly as yum to search, install or remove packages.
To search the repositories for a package type:
To install the package:
To remove a package:
Other common DNF commands include:
For more DNF commands refer to the man pages by typing man dnf at the command-line, or DNF Read The Docs
Automatic Updates
The dnf-automatic package is a component that allows automatic download and installation of updates. It can automatically monitor and report, via e-mail, the availability of updates or send a log about downloaded packages and installed updates.
For more information, refer to the Read the Docs: DNF-Automatic page.
System Upgrades
The Fedora system can be upgraded directly with DNF, or with the DNF system upgrade plugin. Refer to the DNF System Upgrade document for more details.
Language Support Using DNF
DNF can be used to install or remove Language Support. A detailed description with a list of available languages can be found on Language Support Using Dnf page.
Plugins
The core DNF functionality can be extended with plugins. There are officially supported Core DNF plugins and also third-party Extras DNF Plugins. To install them, run
Excluding Packages From Transactions
Sometimes it is useful to ignore specific packages from transactions, such as updates. One such case, for example, could be when an update includes a regression or a bug. DNF allows you to exclude a package from the transaction:
using the command line
using its configuration files
You can add a line to /etc/dnf/dnf.conf to exclude packages:
If you use a GUI update application which does not allow you to specify packages to exclude when they run, this method can be used.
Using the DNF Versionlock plugin
You can also use the DNF versionlock plugin to limit the packages that are included in a transaction. It allows you to list what versions of particular packages should be considered in a transaction. All other versions of the specified packages will be ignored. The plugin is part of dnf-plugins-core package and can be installed using the command below:
To lock the currently installed version of a package, use:
Что такое dnf fedora
Команда dnf предназначена для работы с одноименной утилитой, которая используется для управлении пакетами программного обеспечения в дистрибутивах RHEL, CentOS, а также Fedora Workstation (в первых двух дистрибутивах она пока не используется по умолчанию). Данная утилита пришла на смену широко известной утилите yum из-за проблем с производительностью и потреблением памяти последней. На сегодняшний день утилита dnf обладает всеми возможностями утилиты yum и является ее полноценной заменой, менее требовательной к ресурсам системы.
Вы можете использовать dnf для установки и удаления пакетов программного обеспечения из вашей системы (группами или по одному), а также обновления системных списков пакетов программного обеспечения из подключенных на данный момент репозиториев.
Базовый синтаксис команды выглядит следующим образом:
# dnf [параметры] [команда] имена-пакетов-или-групп
Утилита поддерживает большое количество команд и параметров. Чаще всего используются такие параметры, как параметр —skip-broken, позволяющий пропускать пакеты с проблемами зависимостей, параметр —allowerasing, позволяющий удалять пакеты для разрешения зависимостей, параметр —cacheonly (или -C), позволяющий использовать кэшированные метаданные без их обновления, параметры —assumeyes (или -y) и —assumeno, позволяющие автоматически отвечать утвердительно или отрицательно на все вопросы утилиты, параметры —enablerepo и —disablerepo, позволяющие активировать и деактивировать указанный репозиторий, а также параметр —exclude (или -x), позволяющий исключить из рассмотрения пакет с указанным именем. Основными командами являются:
| Команда | Назначение |
| install | Установка пакета с заданным именем |
| reinstall | Переустановка пакета с заданным именем |
| Удаление пакета с заданным именем | |
| autoremove | Удаление осиротевших пакетов |
| info | Получение информации о пакете с заданным именем |
| provides | Получение имени пакета, в котором имеется файл с заданным именем |
| search | Поиск пакетов с заданным словом в имени |
| list | Вывод имен всех доступных и установленных пакетов |
| list installed | Вывод списка всех установленных пакетов |
| list available | Вывод списка всех доступных пакетов |
| repolist | Вывод списка подключенных репозиториев |
| repolist all | Вывод списка всех репозиториев |
| clean all | Удаление всех метаданных |
| history | Вывод истории использования dnf |
| groupunstall | Установка всех пакетов из группы с заданным именем |
| groupupdate | Обновление всех пакетов из группы с заданным именем |
| groupremove | Удаление всех пакетов из группы с заданным именем |
| grouplist | Вывод имен всех существующих групп пакетов |
Автоматическая загрузка обновлений
В дистрибутиве Fedora Workstation dnf используется также для автоматической загрузки обновлений системы. Если вам не нужна эта функция (например, вы привыкли устанавливать обновления вручную или используете сетевое соединение с ограничением по трафику), вы можете деактивировать ее следующим образом.
В первую очередь следует деактивировать соответствующие службу и таймер systemd:
# systemctl disable dnf-makecache.service
# systemctl disable dnf-makecache.timer
Далее нужно отключить механизм автоматической загрузки обновлений на уровне службы packagekitd:
$ gsettings set org.gnome.software download-updates false
После этого система не будет самостоятельно проверять наличие, загружать и предлагать устанавливать обновления. Не стоит отключать данный механизм без весомых оснований!
Примеры использования
Установка пакета программного обеспечения
Для установки пакета программного обеспечения достаточно просто использовать команду install:
Удаление пакета программного обеспечения
Удаление пакета программного обеспечения осуществляется с помощью команды remove:
Поиск пакета программного обеспечения
Поиск пакета программного обеспечения осуществляется с помощью команды search. Также вместе с ней может использоваться параметр -C для отказа от обновления метаданных:
Обновление пакетов программного обеспечения
Для установки всех обновлений системы достаточно использовать команду update:
DNF — Утилита управления пакетами нового поколения для дистрибутивов на основе RPM
DNF была создана на замену утилиты управления пакетами «YUM» в дистрибутивах на основе Red Hat, а именно RHEL, CentOS и Fedora и т. д., то есть всех тех, которые используют менеджер пакетов RPM.
YUM (сокращение от Yellowdog Updater, Modified) — это бесплатная утилита с открытым исходным кодом на основе командной строки, выпущенная под лицензией GNU General Public License и в основном написанная на языке программирования Python. YUM был разработан для управления и обновления RedHat Linux в Университете Дьюка, позже он получил широкое признание и стал менеджером пакетов RedHat Enterprise Linux, Fedora, CentOS и других дистрибутивов Linux на основе RPM. Его часто называют «Your Package Manager» («вашим менеджером пакетов»), что неофициально часто используют профессионалы Linux.
Идея заменить Yum на DNF
Алеш Козумплик, разработчик проекта DNF, является сотрудником RedHat. Он говорит:
«Впервые в 2009 году, работая над «Anaconda» — установщиком системы, он получил представление о работе с Linux. Он хотел работать над совершенно другим проектом, который позволил бы ему изучить инструмент для работы с пакетами в Fedora».
Недостатки Yum, которые привели к основанию DNF:
Алеш Козумплик говорит, что у него нет другого выбора, кроме как разветвить YUM и разработать DNF. Сопровождающий пакета YUM не был готов реализовать эти изменения. YUM имеет около 59000 LOC, тогда как DNF имеет 29000 LOC (строк кода).
DNF впервые показала своё присутствие в Fedora 18. Fedora 20 была первым дистрибутивом Linux, который предлагал пользователям использовать функциональность DNF вместо YUM.
Расположение файла конфигурации dnf по умолчанию: /etc/dnf/dnf.conf.
1. Как проверить версию DNF
Чтобы проверить версию DNF, установленную в вашей системе, выполните команду:
2. Список включённых репозиториев DNF
Параметр «repolist» с помощью команды dnf отобразит все включённые репозитории в вашей системе.

3. Как вывести все включённые и отключённые репозитории DNF
Параметр «repolist all» распечатает все включённые и отключённые репозитории в вашей системе.

4. Как вывести все доступные и установленные пакеты с помощью DNF
Команда «dnf list» выведет список всех доступных пакетов из всех репозиториев и установленных пакетов в вашей системе Linux.
5. Как узнать все установленные пакеты с помощью DNF
А команда «dnf list» показывает все доступные/установленные пакеты из всех репозиториев. Однако у вас есть возможность вывести список только установленных пакетов с помощью опции «list installed», как показано ниже.
6. Как узнать все доступные пакеты с помощью DNF
Точно так же опция «list available» отобразит все пакеты, доступные для установки из всех включённых репозиториев.
7. Как найти пакет с помощью DNF
Если вы не знаете точное имя пакета, который вы хотите установить, в такой ситуации вы можете использовать опцию «search» с командой dnf для поиска пакета, который соответствует слову или строке (скажем, nano).

8. Как узнать, какому пакету принадлежит файл?
Параметр dnf «provides» находит имя пакета, который содержит конкретный файл или подпакет. Например, если вы хотите узнать, какой пакет в вашей системе создал файл /bin/bash:

9. Как получить подробную информацию о пакете с помощью DNF
Предположим, вы хотите узнать информацию о пакете перед его установкой в систему. Вы можете использовать переключатель «info», чтобы получить подробную информацию о пакете (например, nano), как показано ниже.

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

11. Как обновить пакет с помощью DNF
Вы можете обновить только определённый пакет (например, systemd) и оставить всё остальное в системе нетронутым.
12. Как проверить наличие обновлений системы с помощью DNF
Чтобы проверить обновления для всех пакетов программ, установленных в системе, выполните следующую команду
13. Как обновить все системные пакеты программ с помощью DNF
Вы можете обновить всю систему, включая все установленные пакеты, с помощью следующих команд.
14. Как удалить пакет с помощью DNF
Чтобы удалить или стереть любой нежелательный пакет (например, nano), вы можете использовать переключатель «remove» или «erase» с командой dnf, примеры команд:
15. Как удалить ненужные пакеты с помощью DNF
Те пакеты, которые были установлены для удовлетворения зависимости, могут оказаться бесполезными, если не будут использоваться другими приложениями. Чтобы удалить эти сиротские пакеты, выполните следующую команду.
16. Как удалить кэшированные пакеты с помощью DNF
Часто мы сталкиваемся с устаревшими заголовками и незавершёнными транзакциями, что приводит к ошибке при выполнении dnf. Мы можем очистить все кэшированные пакеты и заголовки, содержащие информацию об удалённых пакетах, просто выполнив:
17. Как получить справку по конкретной команде DNF
Вы можете получить помощь по любой конкретной команде dnf (скажем, clean), просто выполнив приведённую ниже команду.
18. Как узнать все команды и параметры DNF
Чтобы вывести справку по всем доступным командам и параметрам dnf, просто введите:
19. Как посмотреть историю команд DNF
Вы можете вызвать историю dnf, чтобы просмотреть список уже выполненных команд dnf. Следующей командой вы можете узнать, что было установлено/удалено, для каждого действия будет присутствовать отметка времени.
20. Как вывести все групповые пакеты
Команда «dnf grouplist» распечатает все доступные или установленные пакеты, если ничего не упомянуто (не названа имя группы), отобразятся все известные группы.

21. Как установить групповой пакет с помощью DNF
Чтобы установить группу пакетов, объединённых вместе в виде группового пакета (скажем, Сетевые серверы), выполните следующую команду:
22. Обновление группового пакета
Давайте обновим групповой пакет (скажем, Сетевые серверы), выполнив следующую команду.
23. Удаление группового пакета
Мы можем удалить групповой пакет (скажем, Сетевые серверы) следующим образом:
24. Как установить пакет из определённого репозитория
DNF позволяет установить любой конкретный пакет (скажем, phpmyadmin) из репозитория (epel) для этого достаточно выполнить следующую команду:
25. Синхронизация установленных пакетов со стабильной версией
Команда «dnf distro-syncc» предоставит необходимые параметры для синхронизации всех установленных пакетов с самой последней стабильной версией, доступной из любого включённого репозитория. Если пакет не выбран, все установленные пакеты синхронизируются.
26. Как переустановить пакет
Команда «dnf переустановить nano» переустановит уже установленный пакет (скажем, nano).
27. Понижение версии пакета
Параметр «downgrade» понижает версию указанного пакета (скажем, acpid) до более низкой версии, если это возможно.
Основы управления пакетами: apt, yum, dnf, pkg
Самые современные Unix-подобные операционные системы предлагают централизованные механизмы для поиска и установки пакетов. Программное обеспечение, как правило, распространяется в виде пакетов, которые хранятся в репозиториях. Пакеты содержат основные компоненты операционной системы, а также общие библиотеки, приложения, услуги и документацию.
Система управления пакетами, помимо установки программного обеспечения, предоставляет множество других функций и инструментов для модернизации уже установленных пакетов. Репозитории пакетов гарантируют, что код прошел необходимую проверку для использования в системе, и что установленные версии программного обеспечения были одобрены разработчиками.
При настойке сервера или окружения разработки лучше искать пакеты в официальных репозиториях. Пакеты в стабильной версии дистрибутива могут оказаться устаревшими, особенно если программное обеспечение быстро обновляется.
Управление пакетами является жизненно важным навыком для системных администраторов и разработчиков.
Это руководство охватывает основы управления пакетами: поиск, установку и обновление пакетов для различных дистрибутивов.
Системы управления пакетами: краткий обзор
Большинство систем управления пакетами строятся на наборах файлов пакетов. Файл пакета – это, как правило, архив, который содержит скомпилированные бинарные файлы, скрипты установки и другие ресурсы, составляющие программу. Также пакеты содержат ценные метаданные, в том числе их зависимости (список пакетов, необходимых для запуска программы).
Системой бинарных файлов FreeBSD управляет команда pkg. Кроме того, FreeBSD предоставляет коллекцию портов, локальную структуру каталогов и инструментов, которые позволяют извлекать, компилировать и устанавливать пакеты из исходного кода с помощью make-файлов. Обычно удобнее пользоваться менеджером pkg, но иногда предварительно скомпилированные пакеты недоступны.
Обновление списка пакетов
Большинство систем содержит локальную базу данных пакетов, доступных в удаленных репозиториях. Перед установкой или обновлением пакета рекомендуется обновить эту базу данных. Частичным исключением из этого шаблона являются yum и DNF, которые проверяют наличие обновлений пакетов перед выполнением некоторых операций.
| Операционная система | Команда |
| Debian / Ubuntu | sudo apt-get update |
| CentOS | yum check-update |
| Fedora | dnf check-update |
| FreeBSD Packages | sudo pkg update |
| FreeBSD Ports | sudo portsnap fetch update |
Обновление установленных пакетов
Поддержка установленного программного обеспечения в актуальном состоянии без помощи системы управления пакетами – довольно трудоёмкое задание. Вам придется самостоятельно отслеживать обновления пакетов и извещения безопасности для сотен разных пакетов. Конечно, пакетный менеджер не решит всех проблем, которые могут возникнуть при обновлении программного обеспечения, но он поможет поддерживать большинство компонентов системы в актуальном состоянии при помощи всего нескольких команд.
В системе FreeBSD обновление установленных портов может потребовать ручной настройки. Прежде чем обновлять portmaster, рекомендуется ознакомиться с /usr/ports/UPDATING.
Поиск пакетов
Большинство дистрибутивов предоставляет графический или управляемый в режиме меню интерфейс для наборов пакетов. Он позволяет просматривать категории и искать новое программное обеспечение. Однако чаще всего самым быстрым и самым эффективным способом поиска пакетов является поиск с помощью инструментов командной строки.
Информация о пакетах
Принимая решение, как пакет установить, обратитесь за помощью к подробному описанию пакетов. Этот удобочитаемый текст часто содержит полезные метаданные: номера версий, список зависимостей и т.п.
Установка пакетов из репозиториев
Зная имя необходимого пакета, его можно очень быстро установить при помощи одной команды. Также в одной команде можно перечислить все пакеты, которые нужно установить.
Установка пакета из локальной файловой системы
Иногда разработчики или поставщики предлагают пакетные файлы для скачивания, даже если приложение официально не упаковано для данной операционной системы.
Как правило, такие пакеты можно загрузить при помощи веб-браузера или утилиты curl в командной строке. После загрузки пакета его можно установить с помощью одной команды.
В Debian-подобных системах индивидуальными файлами пакетов управляет dpkg. Если пакет имеет зависимости, которых не установлены в системе, gdebi может загрузить их из официального репозитория.
В системах CentOS и Fedora для установки отдельных файлов и обработки необходимых зависимостей используется yum и dnf.
Удаление пакетов
Менеджер пакетов знает, какие именно файлы предоставляет каждый конкретный пакет, потому с его помощью можно легко удалить все ненужные программы.
| Система | Команда |
| Debian / Ubuntu | sudo apt-get remove package |
| sudo apt-get autoremove | |
| CentOS | sudo yum remove package |
| Fedora | sudo dnf erase package |
| FreeBSD (пакеты) | sudo pkg delete package |
| sudo pkg autoremove | |
| FreeBSD (порты) | sudo pkg delete package |
| cd /usr/ports/path_to_port && make deinstall |
Получение справки
Кроме веб-документации системы Unix предоставляют удобный справочник, в котором можно найти информацию о большинстве команд оболочки. Чтобы открыть мануал, введите:
В справочнике можно перемещаться при помощи кнопок со стрелками. Нажмите /, чтобы искать по тексту страницы, и q, чтобы выйти.
| Система | Команда | Примечания |
| Debian / Ubuntu | man apt-get | Обновление локальной базы данных пакетов и работа с пакетами. |
| man apt-cache | Запрос локальной базы данных пакетов. | |
| man dpkg | Управление индивидуальными файлами пакетов и запрос установленных пакетов. | |
| CentOS | man yum | |
| Fedora | man dnf | |
| FreeBSD пакеты | man pkg | Управление предварительно скомпилированными файлами пакетов. |
| FreeBSD порты | man ports | Управление коллекцией портов. |
Дополнительные ссылки
Данное руководство знакомит с основами управления пакетами в Unix-подобных системах. Более подробную информацию по этой довольно сложной теме можно найти по следующим ссылкам:
Управление пакетами программного обеспечения с помощью утилиты DNF в дистрибутиве Fedora
Оригинал: Managing packages on Fedora with DNF
Автор: Ankur Sinha «FranciscoD»
Дата публикации: 15 сентября 2015 г.
Перевод: А.Панин
Дата перевода: 8 октября 2015 г.
В версии 22 дистрибутива Fedora было внесено значительное изменение в низкоуровневый инструментарий администрирования системы: был представлен менеджер пакетов программного обеспечения DNF (DaNdiFied YUM). Данное изменение видимо лишь тем пользователям, которые использовали менеджер пакетов программного обеспечения YUM для работы с пакетами программного обеспечения из репозиториев дистрибутива Fedora. Пользователи, работающие с различными инструментами с графическим интерфейсом, такими, как Центр приложений GNOME и Apper, не должны заметить каких-либо изменений.
Основные команды остались теми же
В процессе проектирования нового менеджера пакетов программного обеспечения разработчики DNF пытались сделать переход с YUM на DNF максимально простым для пользователей. Они решили использовать в своем менеджере пакетов синтаксис команд, максимально повторяющий синтаксис соответствующих команд YUM. Таким образом, основные команды остались теми же, что и в YUM. При работе с YUM, к примеру, для установки пакета программного обеспечения, а именно, nano, могла быть использована следующая команда.
В случае работы с DNF для этой цели может использоваться следующая команда:
По аналогии для поиска пакета программного обеспечения в случае работы с YUM могла использоваться следующая команда:
В случае работы с DNF для этой цели может использоваться аналогичная команда:
Плагины DNF для выполнения более сложных задач
Опытные пользователи могли заметить, что в данной статье пока не затрагивались команды, реализованные в рамках сценариев из пакета yum-utils, такие, как команды для установки пакетов с отладочной информацией для приложений или команды для загрузки пакетов RPM с исходным кодом приложений из репозиториев. Для реализации таких специфических функций в DNF используются различные плагины, которые упакованы в различные пакеты программного обеспечения из репозитория дистрибутива Fedora. В приведенной ниже таблице документируются некоторые из этих плагинов:
| Команда Yum | Команда DNF | Реализация в пакете |
|---|---|---|
| debuginfo-install | dnf debuginfo-install | dnf-plugins-core |
| repoquery | dnf repoquery | dnf-plugins-core |
| yum-builddep | dnf builddep | dnf-plugins-core |
| yum-config-manager | dnf config-manager | dnf-plugins-core |
| yumdownloader | dnf download | dnf-plugins-core |
| repo-graph | dnf repograph | dnf-plugins-extras-repograph |




