Примеры команд DNF для начинающих
Основные команды DNF для начинающих
В этом руководстве объясняется, что такое менеджер пакетов DNF, и перечислены полезные примеры команд DNF для управления пакетами в Fedora, RHEL и его клонах, таких как CentOS, CentOS Stream, AlmaLinux и Rocky Linux.
В конце этого руководства вы получите базовое представление о том, как использовать диспетчер пакетов DNF для поиска, установки, обновления, обновления и удаления пакетов в системах на базе RPM.
Что такое ДНФ?
DNF, сокращение от Dandified YUM, представляет собой версию YUM следующего поколения и является менеджером пакетов по умолчанию, начиная с Fedora 22.
DNF призван заменить YUM в системах на базе RPM, таких как Fedora, RHEL и его клонах, таких как CentOS, AlmaLinux и Rocky Linux.
По сравнению с YUM, DNF имеет некоторые существенные преимущества, такие как поддержка нескольких репозиториев, поддержка групп пакетов, более высокая скорость разрешения зависимостей и потребление меньше памяти, работает как на Python 2, так и на Python 3, надежная документация по API, совместимость с YUM и многим другим.
Примеры команд DNF для начинающих
Начиная с Fedora 22, yum был заменен на DNF, поэтому вам не нужно его устанавливать, если вы используете Fedora. В CentOS 7 и RHEL 7 вы можете установить его, как описано в руководстве, приведенном ниже.
- Как установить DNF в CentOS 7
Использование DNF очень похоже на YUM. Все представленные здесь команды были протестированы на минимальной серверной версии CentOS 7 с пользователем root.
1. Отображение справки DNF
Чтобы просмотреть все основные команды, команды и параметры плагина, запустите:
dnf help
Чтобы получить справку по конкретной команде, например «install», выполните:
dnf help install
Чтобы узнать об установленной на данный момент версии DNF, запустите:
dnf --version
2. Управление пакетами
В этом разделе описывается установка, обновление, просмотр списка, поиск, загрузка, переустановка и удаление пакетов.
2.1. Получение информации о пакете
Чтобы получить подробную информацию об установленном или неустановленном пакете, запустите:
dnf info vim
2.2. Установка пакетов
Чтобы установить новый пакет, например vim, запустите:
dnf install vim
Мы также можем установить несколько пакетов, как показано ниже.
dnf install vim nano emacs
Вам нужно ввести «y», чтобы продолжить установку. Если вы не хотите делать это каждый раз, вы можете включить опцию «y» в команды автоподтверждения.
dnf install vim nano emacs -y
Это не будет ждать подтверждения пользователя. Вместо этого он примет подтверждение пользователя как «Да» и просто установит все пакеты автоматически.
Если вы уже загрузили файл .rpm
, вы можете установить его с помощью команды:
sudo dnf localinstall code-1.74.2-1671533504.el7.x86_64.rpm
2.3. Листинг пакетов
Чтобы вывести список всех доступных и установленных пакетов:
dnf list
Чтобы вывести список только всех установленных пакетов, мы используем:
dnf list installed
Чтобы вывести список только доступных пакетов:
dnf list available
2.4. Обновление пакетов
Чтобы проверить наличие всех доступных обновлений, выполните:
dnf check-update
Или,
dnf list updates
Чтобы обновить один пакет (например, bash), запустите:
dnf update bash
Чтобы просмотреть наличие обновлений для установленного пакета, запустите:
# dnf list yum.noarch
Using metadata from Sat Feb 10 14:47:22 2018
Installed Packages
yum.noarch 3.4.3-150.el7.centos @System
Available Packages
yum.noarch 3.4.3-154.el7.centos.1 update
Эта команда отобразит текущую установленную версию и доступное обновление из репозитория. В приведенном выше выводе @system указывает установленную версию, а update указывает доступное обновление из репозитория.
Чтобы обновить несколько пакетов:
dnf update package1 package2
Передайте опцию «y» для автоматического подтверждения.
dnf update package1 package2 -y
Чтобы обновить/обновить все пакеты, запустите:
dnf update
dnf upgrade
Чтобы синхронизировать установленные пакеты с последними доступными версиями:
dnf distro-sync
2.5. Поиск пакетов
Для поиска пакета в репозитории выполните:
dnf search vim
Эта команда выведет список всех пакетов, соответствующих слову «vim».
2.6. Загрузка пакетов
Иногда вам может потребоваться загрузить пакет, но вы не хотите устанавливать его прямо сейчас. Если да, запустите:
dnf download vim
Эта команда загрузит пакет vim-enhanced-xx.xx.x.rpm, но не установит его.
Чтобы установить загруженный пакет, запустите:
dnf install vim-enhanced-7.4.160-2.el7.x86_64.rpm
Или,
dnf localinstall vim-enhanced-7.4.160-2.el7.x86_64.rpm
Все остальные необходимые зависимости будут загружены и установлены из репозитория.
2.7. Понижение версии пакетов
Чтобы понизить версию пакета, который вы ранее обновили, запустите:
dnf downgrade bash
2.8. Переустановка пакетов
Возникли проблемы с уже установленным пакетом? Не беспокойся! Вы можете переустановить его в любое время.
Чтобы переустановить пакет, используйте:
dnf reinstall vim
2.9. Удаление пакетов
Чтобы удалить пакет (например, vim) из системы, запустите:
dnf remove vim
Вы также можете использовать опцию «Стереть», как показано ниже.
dnf erase vim
3. Группы пакетов
Группа пакетов — это набор пакетов, которые служат общей цели, например «Инструменты разработки» или «Веб-сервер». Когда вы устанавливаете группу пакетов, все зависимые пакеты будут загружены и установлены. Установка групп сэкономит вам значительное количество времени.
3.1. Установка групп пакетов
Чтобы просмотреть все доступные группы пакетов, запустите:
dnf grouplist
Чтобы установить группу пакетов, например «Инструменты разработки», запустите:
dnf groupinstall 'Development Tools'
Эта команда установит все пакеты, необходимые для настройки среды разработки.
3.2. Обновление групп пакетов
Чтобы обновить группу пакетов, запустите:
dnf groupupdate 'Development Tools'
3.3. Удаление групп пакетов
Чтобы удалить группу пакетов, запустите:
dnf groupremove 'Development Tools'
4. Работа с репозиториями
4.1. Список установленных репозиториев
По умолчанию все репозитории будут добавлены в каталог /etc/yum.repos.d/ в CentOS/RHEL. Вы можете просмотреть установленные репозитории с помощью команды:
dnf repolist
Приведенная выше команда отобразит только включенные репозитории. Чтобы отобразить все репозитории (как включенные, так и отключенные), запустите:
dnf repolist all
4.2. Добавление репозиториев
Вы можете добавить репозиторий, вручную создав файл package.repo в каталоге /etc/yum.repos.d/. Однако DNF делает это еще проще.
Чтобы добавить новый репозиторий, запустите:
dnf config-manager --add-repo repository_url
Пример :
dnf config-manager --add-repo http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
Чтобы просмотреть вновь добавленный репозиторий, мы делаем:
# dnf repolist
created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ 115 kB/s | 3.5 MB 00:31
Using metadata from Sat Feb 10 14:47:22 2018
repo id repo name status
base CentOS-7 - Base 9,591
epel Extra Packages for Enterprise Linux 7 - x86_64 12,278
extras CentOS-7 - Extras 388
springdale.math.ias.edu_data_puias_unsupported_7_x86_64_ created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupporte 2,760
updates CentOS-7 - Updates
Чтобы просмотреть только файл .repo
:
cat /etc/yum.repos.d/springdale.math.ias.edu_data_puias_unsupported_7_x86_64_.repo
[springdale.math.ias.edu_data_puias_unsupported_7_x86_64_]
name=created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
baseurl=http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
enabled=1
4.3. Включение репозиториев
Чтобы включить репозиторий, используйте:
dnf config-manager --set-enabled <repo-id>
Пример :
dnf config-manager --set-enabled epel
Мы можем проверить, выполнив следующую команду, чтобы увидеть только включенные репозитории.
dnf repolist
Кроме того, мы можем объединить параметры включения и установки, как показано ниже.
dnf config-manager --set-enabled epel install zsh
Приведенная выше команда включает репозиторий EPEL и устанавливает пакет zsh.
4.4. Отключение репозиториев
Для отключения репозитория, например EPEL, используем:
dnf config-manager --set-disabled epel
Мы также можем объединить параметры включения и отключения, как показано ниже.
dnf --enablerepo=epel --disablerepo=updates
Приведенная выше команда включит репозиторий EPEL и отключит репозиторий обновлений.
5. Поиск того, что что-то дает
DNF позволяет вам узнать, какой пакет предоставляет конкретную команду или файл. Если вы не помните точно, какой пакет предоставляет конкретную команду, которую вы хотели использовать, вам может помочь DNF.
5.1. Найдите, какой пакет предоставляет конкретную команду
Мне не хватает старой доброй команды ifconfig. Эта команда устарела и недоступна в последних версиях. Чтобы узнать, какой пакет предоставляет этот драгоценный камень, запустите:
dnf provides */ifconfig
Пример вывода:
Using metadata from Thu Feb 8 15:52:17 2018
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo : base
Ах, да! Пакет net-tools предоставляет эту команду. Таким образом, вы можете установить этот пакет, чтобы использовать команду ifconfig.
5.2. Найдите, какой пакет предоставляет файл
Позвольте нам узнать, какой пакет предоставляет файл /bin/ls. Для этого запустите:
# dnf provides */bin/ls
Using metadata from Thu Jun 30 12:51:16 2016
coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : @System
coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : base
Как видно из приведенного выше вывода, пакет coreutils предоставляет файл /bin/ls.
Связанное чтение:
- Как найти пакет, предоставляющий определенный файл в Linux
6. Работа с историей DNF
Используя команду «dnf History», мы можем просмотреть все действия, которые мы выполнили с помощью команды DNF.
# dnf history
Using metadata from Sat Feb 10 14:47:22 2018
ID | Command line | Date a | Action | Altere
-------------------------------------------------------------------------------
2 | update bash | 2018-02-10 14:55 | Update | 1
1 | install vim | 2018-02-10 14:51 | E, I | 33 EE
Как вы видите в приведенном выше выводе, было две транзакции. Я установил пакет с именем «vim» и обновил пакет «bash». Самые новые транзакции будут отображаться вверху.
Чтобы просмотреть детали конкретной транзакции, используйте ее идентификатор, как показано ниже.
dnf history list 2
Мы также можем просмотреть полную информацию о конкретной транзакции, как показано ниже.
# dnf history info 2
Using metadata from Sat Feb 10 14:47:22 2018
Transaction ID : 2
Begin time : Sat Feb 10 14:55:38 2018
Begin rpmdb : 360:fa7bea798a10e850b2bf800182b377443b481652
End time : 14:55:39 2018 (1 seconds)
End rpmdb : 360:dc9f6bb33b00fe1d74dd205586c0ff8c4674f8f7
User : root <root>
Return-Code : Success
Command Line : update bash
Transaction performed with:
Installed dnf-0.6.4-2.sdl7.noarch (unknown)
Installed rpm-4.11.3-21.el7.x86_64 (unknown)
Packages Altered:
Upgraded bash-4.2.46-21.el7_3.x86_64 (unknown)
Upgrade 4.2.46-29.el7_4.x86_64 @updates
Как видите, транзакция с идентификатором 2 использовалась для обновления пакета с именем «bash». Мы можем отменить эту транзакцию в любой момент с помощью команды:
dnf history undo 2
Чтобы повторить предыдущую транзакцию отмены, просто запустите:
dnf history redo 2
7. Создание кэша метаданных DNF
Кэш метаданных DNF будет автоматически создан при установке и обновлении пакетов. Поэтому нам не нужно создавать его вручную. Однако в DNF есть встроенная команда для создания кеша, чтобы ускорить будущие транзакции.
Чтобы создать кеш метаданных, запустите:
# dnf makecache
Extra Packages for Enterprise Linux 7 - x86_64 155 kB/s | 15 MB 01:35
created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ 136 kB/s | 3.5 MB 00:26
CentOS-7 - Base 195 kB/s | 9.5 MB 00:49
CentOS-7 - Updates 240 kB/s | 7.9 MB 00:33
CentOS-7 - Extras 84 kB/s | 820 kB 00:09
Metadata cache created.
8. Уборка
Чтобы удалить ненужные/потерянные пакеты, запустите:
dnf autoremove
Чтобы удалить все кэшированные пакеты, запустите:
dnf clean all
Вместо полной очистки кеша вы можете выполнить индивидуальную очистку метаданных, dbcache, пакетов, плагинов и т. д.
Чтобы удалить файлы кэша, созданные из метаданных репозитория:
dnf clean dbcache
Это заставляет DNF повторно создавать файлы кэша при следующем запуске.
Чтобы удалить локальные файлы cookie, сообщающие, когда метаданные и зеркальные списки были загружены для каждого репозитория, запустите:
dnf clean expire-cache
DNF будет повторно проверять кеш для каждого репозитория при следующем его использовании.
Чтобы удалить метаданные репозитория:
dnf clean metadata
Использование этой опции заставит DNF загрузить все метаданные при следующем запуске.
Чтобы удалить все кэшированные пакеты из системы:
dnf clean packages
Следующая команда сообщает всем включенным плагинам удалить кэшированные данные.
dnf clean plugins
Этого достаточно, чтобы получить базовые навыки использования DNF в Fedora, RHEL и CentOS. Более подробную информацию можно найти на страницах руководства.
man dnf
Заключение
В этом руководстве пользователя по командам DNF мы изучили основные команды DNF с примерами управления пакетами RPM в Linux.
Ресурс:
- Официальная документация DNF
Связанное чтение:
- Как ускорить диспетчер пакетов DNF в Fedora, RHEL, CentOS, AlmaLinux, Rocky Linux
- Начало работы с Pacman