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