Поиск по сайту:

Примеры команд 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

Статьи по данной тематике