Dnf команда не найдена centos

Обновлено: 04.07.2024

Репозитории CentOS содержат тысячи пакетов rpm, которые можно установить с помощью диспетчера программного обеспечения рабочего стола или из командной строки с помощью утилит yum , dnf и rpm . Некоторые библиотеки и приложения упакованы в формате rpm, но не включены ни в один репозиторий CentOS. Эти приложения необходимо загрузить с веб-сайтов разработчика и установить вручную.

В этом руководстве мы объясним, как установить файлы rpm на CentOS.

Будьте особенно осторожны при установке пакетов rpm из неофициальных источников. Пакет должен быть построен для вашей системной архитектуры и версии CentOS . Никогда не заменяйте и не обновляйте важные системные пакеты, такие как glibc, systemd или другие службы и библиотеки, которые необходимы для правильного функционирования системы.

Только root или пользователь с привилегиями sudo может устанавливать или удалять пакеты RPM.

Установка файлов rpm с помощью yum и dnf

Начиная с CentOS 8 dnf заменил yum в качестве менеджера пакетов по умолчанию. dnf обратно совместим с yum .

Вы можете продолжать использовать yum в CentOS 8, поскольку это псевдоним для dnf .

Чтобы установить локальные пакеты rpm с помощью yum или dnf , используйте команду install , за которой следует путь к файлу. В приведенном ниже примере мы устанавливаем браузер Chrome :

И yum и dnf разрешат и установят все зависимости пакета. Вам будет предложено ввести Y чтобы продолжить:

Вот и все, приложение установлено в вашей системе, и вы можете начать им пользоваться.

Вы также можете установить пакет rpm прямо с URL-адреса:

Установка файлов rpm с помощью rpm

Вы всегда должны предпочесть использовать yum или dnf rpm при установке, обновлении и удалении пакетов, поскольку это не разрешает зависимости.

Чтобы установить пакеты rpm с помощью rpm используйте параметр -i (или -U ), за которым следует путь к файлу:

Если пакет, который вы устанавливаете или обновляете, зависит от других пакетов, которые в настоящее время не установлены, rpm отобразит список всех недостающих зависимостей. Вам нужно будет установить все зависимости.

rpm также принимает установку пакетов с URL-адреса:

Выводы

В CentOS вы можете установить локальный rpm-файл с помощью yum или dnf точно так же, как если бы вы устанавливали пакет из репозиториев.

Статья представляет из себя небольшую шпаргалку по работе с пакетным менеджером dnf (CentOS 8) и yum (CentOS 7 и ниже). В данном руководстве мы будем использовать только команду yum, так как она работает и в CentOS 7 и в 8.

Репозитории

Команда yum/dnf использует репозитории для своей работы. Очень важно понять, как с ними работать в системе. Конфиги репозиториев CentOS описывают пути, по которым система может брать установочные файлы для пакетов, а также правила работы с самими репозиториями.

Примеры команд для управления репозиториями

1. Просмотр репозиториев.

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

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

yum repolist all

Также мы можем получить подробное описание для каждого включенного репозитория:

Список отключенных репозиториев можно посмотреть отдельно командой:

yum repolist disabled

2. Добавление репозитория командой.

Для добавления репозитория мы можем воспользоваться командой yum-config-manager, для этого сначала нужно установить yum-utils:

yum install yum-utils

yum-config-manager --add-repo <репозиторий>

3. Добавление репозитория через файл.

Также мы можем создать конфигурационный файл с описанием репозитория. Все файлы находятся в каталоге /etc/yum.repos.d. Например, создадим файл с добавлением репозитория mariadb:

  • name — произвольное имя репозитория.
  • baseurl — путь, по которому система может забирать пакеты из репозитория.
  • gpgkey — путь до открытого gpg-ключа. Нужен для проверки цифровой подписи пакетов.
  • gpgcheck — нужно ли проверять цифровую подпись пакетов.
  • enabled — опция включает или выключает репозиторий.

4. Временное включение и отключение репозиториев во время операций (на примере репозитория EPEL).

Отключить во время обновления:

yum update --disablerepo=epel

Включить во время обновления:

yum update --enablerepo=epel

Отключить во время установки:

yum install --disablerepo=epel

Включить во время установки:

yum install --enablerepo=epel

5. Постоянное отключение/включение репозиториев.

Мы можем отключить наш репозиторий командой:

yum-config-manager --disable <имя репозитория>

* для выполнения данной команды мы должны установить в систему пакет yum-utils.

Разрешить репозиторий можно той же командой с опцией --enable:

Также мы можем выполнить настройку в конфигурационном файле, например:

* в данном примере 1 разрешает репозиторий, а 0 запрещает.

6. Настройка опций.

Наши репозитории настраиваются с помощью опций, которые перечислены в конфигурационном файле. Мы можем также их задавать командой:

yum-config-manager --save --setopt=<имя репозитория>.<имя опции>=<значение>

yum-config-manager --save --setopt=mariadb.module_hotfixes=1

Обслуживание

1. Удалить кэш для списков пакетов в репозиториях, а также загруженные исходники для пакетов:

yum clean --enablerepo=* all

Также мы можем удалить кэш только для определенных репозиториев, например:

yum clean all --disablerepo="*" --enablerepo="epel,nginx-thirdparty"

* обязательно, сначала должен следовать disablerepo, после enablerepo.

2. Сформировать кэш списков пакетов в репозиториях:

Установка, обновление и получение информации о пакетах

1. Установка пакета:

yum install <имя пакета>

2. Обновление всех установленных пакетов:

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

yum update <имя пакета>

4. Установить пакет из определенного репозитория:

yum --disablerepo="*" --enablerepo=thirdparty install nginx

* как говорилось выше, мы можем оперировать опциями disablerepo и enablerepo для включения и отключения репозитория во время установки. В данном примере мы запретили все и разрешили установить нужный нам пакет из репозитория thirdparty.

5. Только скачать пакет, не устанавливая его:

yum install --downloadonly --downloaddir=<куда скачать> <имя пакета>

yum install --downloadonly --downloaddir=/tmp nodejs

* скачиваем пакет nodejs в каталог /tmp.

6. Распаковать содержимое пакета RPM:

rpm2cpio <путь до файла rpm> | cpio -idmv

Просмотр информации о пакетах

1. Список установленных пакетов:

yum list --installed

2. Получение зависимостей для пакета:

yum deplist <имя пакета>

yum deplist nginx

* покажет, какие пакеты или библиотеки необходимы для установки nginx. Дополнительно, могут быть указаны пакеты, которые нужны для удовлетворения зависимостей.

3. Посмотреть список файлов внутри установочного пакета.

Мы можем посмотреть данный список для уже установленного пакета:

rpm -ql <имя установленного пакета>

Или из установочного файла:

rpm -qlp <путь до RPM-пакета>

rpm -qlp nginx.rpm

4. Посмотреть, какой пакет предоставляет определенный файл:

yum provides audit-libs-python

В данном примере мы получим ответ:

audit-libs-python-2.8.5-4.el7.x86_64 : Python bindings for libaudit
Repo : base

Это значит, что audit-libs-python содержится в пакете audit-libs-python-2.8.5-4.el7.x86_64, который в свою очередь, находится в репозитории base.

Можно также выполнять поиск по маске:

yum provides audit-libs-*

Управление потоками (модулями)

Модульные репозитории позволяют установить пакеты разных версий. По сути, это группы RPM-пакетов, которые должны быть установлены вместе и представляют из себя логическую единицу для установки программного продукта нужной версии. Включить можно только одну версию модуля для репозитория.

1. Вывести список доступных модулей:

dnf module list

  • [d] — значения по умолчанию.
  • [e] — включенные модули.
  • [x] — отключены.
  • [i] — установленные.

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

Мы также можем посмотреть отдельные по состоянию группы модулей:

dnf module list --enabled

dnf module list --disabled

dnf module list --installed

2. Вывести список возможных модулей для конкретного пакета:

dnf module list nodejs

* в данном примере для nodejs.

3. Разрешить или запретить конкретный модуль:

dnf module enable nodejs:12

dnf module disable nodejs:14

* первая команда разрешит модуль nodejs версии 12, вторая, соответственно, запрещает использование модуля nodejs версии 14.

4. Переключение модуля.

Если мы хотим изменить активный модуль, необходимо сначала отключить текущий командой dnf module reset, например:

dnf module reset php:7.3

После включаем новый поток:

dnf module enable php:7.4

Заблокировать установку и обновление пакетов

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

1. Во время обновления (разово)

Данный метод можно использовать при обновлении пакетов. Мы с помощью ключа -x просто указываем через запятую те, которые не должны быть обновлены, например:

yum -x postgresql*,asterisk update

* данной командой мы обновим все пакеты, кроме asterisk и тех, название которых начинается на postgresql.

2. Постоянный запрет в yum.conf

Аналогично, можно запретить как установку, так и обновление в конфигурационном файле yum.conf. Открываем его командой:

* в данном примере мы также запретим установку и обновление asterisk, а также пакетов, название которых начинается на postgresql.

3. Настройка репозитория

Ну и также мы можем заблокировать установку и обновление через конфигурационный файл репозитория. Например:

* в данном примере мы блокируем пакет postgresql12.

Возможные ошибки

Рассмотрим примеры ошибок, с которыми мы можем столкнуться и способы их решения.

1. Curl error (60): SSL peer certificate or SSH remote key was not OK

Ошибка появляется при попытке выполнить операцию обновления или установки пакетов.

Причина: сертификат подключенного репозитория не проходит проверку. Возможно, он просрочен или выдан не доверенным центром сертификации.

yum-config-manager --save --setopt=<имя репозитория>.sslverify=0

Или в конфигурационном файле репозитория добавить или изменить строку с sslverify:

* данная опция задает необходимость проверки SSL для репозитория.

2. Error: GPG validation FAILED

Ошибка появляется при попытке установить пакет.

Причина: система не может загрузить и импортировать gpg-ключ. Это возможно в разных сценариях, например, в настройках репозитория не указан путь до него, но при этом указано, что проверка подписи необходима или ключ не удалось загрузить и импортировать.

Решение: для некоторых пакетов идет отдельная инструкция по настройке репозитория, в частности, установки ключа GPG. Или мы можем отключить проверку gpg командой:

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 с помощью библиотеки SUSE libsolv и оболочки Python вместе с C Hawkey.
  • У YUM нет документированного API.
  • Создавать новые функции сложно.
  • Нет поддержки других расширений, кроме Python.
  • Меньшие затраты памяти и меньшая автоматическая синхронизация метаданных — процесс, требующий много времени.

Алеш Козумплик говорит, что у него нет другого выбора, кроме как разветвить 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) до более низкой версии, если это возможно.


DNF нацелен на устранение узких мест YUM, а именно:

  • проблем с производительностью,
  • проблем с использованием памяти,
  • проблем с разрешениями зависимостей,
  • проблем со скоростью работы и многими другими факторами.

DNF осуществляет управление пакетами, используя библиотеки RPM, libsolv и hawkey. Хотя он не входит в состав CentOS и RHEL 7, вы можете использовать как yum,так и dnf.

Установка DNF

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

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


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

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

1. Проверка версии DNF

Проверьте версию DNF, установленную в вашей Системе:

dnf


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

Опция «repolist» с командой dnf отобразит все включенные репозитории в вашей системе:


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

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

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

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

5. Вывод списка всех установленных пакетов

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

6. Вывод списка всех доступных пакетов

Аналогичным образом, опция «list available» выводит список всех пакетов, доступных для установки из всех включенных репозиториев:

7. Поиск пакета с использованием DNF
8. Просмотр описание файл/субпакет, к какому пакету принадлежит файл, что он делает?

Опция dnf provides ищет имя пакета, к которому принадлежит определенный файл/подпакет. Например, если вы хотите найти к какому пакету принадлежит ‘/bin/bash‘ в вашей системе, выполните:

9. Просмотр деталей пакета

Предположим, что вы хотите узнать информацию о пакете до его установки в системе, вы можете использовать опцию «info» для получения подробной информации о пакете, как показано ниже:

10. Установка пакета с DNF

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

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

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

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

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

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

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

14. Удаление пакета

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

16. Удаление кэшированных пакетов

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

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

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

18. Вывод всех команд и опции DNF

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

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

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

20. Вывод всех групповых пакетов

Команда «dnf grouplist» выведет все доступные или установленные пакеты, если не упомянуто никаких опций, она выведет список всех известных групп:

21. Установка группы пакетов

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

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

Давайте обновим групповой пакет, выполнив приведенную ниже команду:

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

Мы можем удалить групповой пакет:

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

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

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

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

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

Команда «dnf reinstall nano» переустанавливает уже установленный пакет:

27. Откат версии пакета

Опция «downgrade» откатывает версию указанного пакета до предыдущей версии, если это возможно:

Пример вывода

Итоги

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

Некоторые пользователи Linux не довольны тем, как движется Linux Ecosystem. Сначала Systemd удалил init system v, и теперь DNF будет заменять YUM сначала в Fedora 22, а затем и в RHEL и CentOS.

Что вы думаете? Вся экосистема Linux не ценит своих пользователей и движется против их воли??

Это все на данный момент. Пожалуйста, дайте нам знать ваши мысли в комментариях ниже. \

Спасибо за уделенное время на прочтение статьи о 27 командах DNF (форк команды Yum) для управления пакетами RPM в Linux!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Самые современные Unix-подобные операционные системы предлагают централизованные механизмы для поиска и установки пакетов. Программное обеспечение, как правило, распространяется в виде пакетов, которые хранятся в репозиториях. Пакеты содержат основные компоненты операционной системы, а также общие библиотеки, приложения, услуги и документацию.

Система управления пакетами, помимо установки программного обеспечения, предоставляет множество других функций и инструментов для модернизации уже установленных пакетов. Репозитории пакетов гарантируют, что код прошел необходимую проверку для использования в системе, и что установленные версии программного обеспечения были одобрены разработчиками.

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

Управление пакетами является жизненно важным навыком для системных администраторов и разработчиков.

Это руководство охватывает основы управления пакетами: поиск, установку и обновление пакетов для различных дистрибутивов.

Системы управления пакетами: краткий обзор

Большинство систем управления пакетами строятся на наборах файлов пакетов. Файл пакета – это, как правило, архив, который содержит скомпилированные бинарные файлы, скрипты установки и другие ресурсы, составляющие программу. Также пакеты содержат ценные метаданные, в том числе их зависимости (список пакетов, необходимых для запуска программы).

Операционная система Формат
Debian .deb
Ubuntu .deb
CentOS .rpm
Fedora .rpm
FreeBSD порты, .txz

CentOS, Fedora и другие системы Red Hat используют файлы RPM. В CentOS для взаимодействия с пакетами и репозиториями используется менеджер yum. В последних версиях Fedora yum был заменён модернизированным менеджером dnf.В системе Debian и основанных на ней системах (Ubuntu, Linux Mint, Raspbian) используется формат .deb. Пакетный менеджер APT (Advanced Packaging Tool) предоставляет команды, используемые для наиболее распространенных операций: поиска репозиториев, управления обновлениями, установки набора пакетов и их зависимостей. Команды APT работают как фронтэнд утилиты нижнего уровня dpkg, которая обрабатывает установку индивидуальных пакетов .deb на локальную систему; при необходимости эту утилиту можно вызывать явно.

Системой бинарных файлов 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.

Система Команда
Debian / Ubuntu sudo apt-get upgrade
sudo apt-get dist-upgrade
CentOS sudo yum update
Fedora sudo dnf upgrade
FreeBSD Packages sudo pkg upgrade
FreeBSD Ports less /usr/ports/UPDATING
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a

Поиск пакетов

Большинство дистрибутивов предоставляет графический или управляемый в режиме меню интерфейс для наборов пакетов. Он позволяет просматривать категории и искать новое программное обеспечение. Однако чаще всего самым быстрым и самым эффективным способом поиска пакетов является поиск с помощью инструментов командной строки.

Система Команда
Debian / Ubuntu apt-cache search search_string
CentOS yum search search_string
yum search all search_string
Fedora dnf search search_string
dnf search all search_string
FreeBSD (пакеты) pkg search search_string
pkg search -f search_string
pkg search -D search_string
FreeBSD (порты) cd /usr/ports && make search name=package
cd /usr/ports && make search key=search_string

Информация о пакетах

Принимая решение, как пакет установить, обратитесь за помощью к подробному описанию пакетов. Этот удобочитаемый текст часто содержит полезные метаданные: номера версий, список зависимостей и т.п.

Установка пакетов из репозиториев

Зная имя необходимого пакета, его можно очень быстро установить при помощи одной команды. Также в одной команде можно перечислить все пакеты, которые нужно установить.

Установка пакета из локальной файловой системы

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

Как правило, такие пакеты можно загрузить при помощи веб-браузера или утилиты curl в командной строке. После загрузки пакета его можно установить с помощью одной команды.

В Debian-подобных системах индивидуальными файлами пакетов управляет dpkg. Если пакет имеет зависимости, которых не установлены в системе, gdebi может загрузить их из официального репозитория.

В системах CentOS и Fedora для установки отдельных файлов и обработки необходимых зависимостей используется yum и dnf.

Система Команда
Debian / Ubuntu sudo dpkg -i package.deb
sudo apt-get install -y gdebi&& sudo gdebi package.deb
CentOS sudo yum install package.rpm
Fedora sudo dnf install package.rpm
FreeBSD (пакеты) sudo pkg add package.txz
sudo pkg add -f package.txz

Удаление пакетов

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

Система Команда
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-подобных системах. Более подробную информацию по этой довольно сложной теме можно найти по следующим ссылкам:

Читайте также: