Советы по работе с Yum и RPM. Группы пакетов CentOS
Самые современные 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 |
Информация о пакетах
Принимая решение, как пакет установить, обратитесь за помощью к подробному описанию пакетов. Этот удобочитаемый текст часто содержит полезные метаданные: номера версий, список зависимостей и т.п.
Система | Команда |
Debian / Ubuntu | apt-cache show package |
dpkg -s package | |
CentOS | yum info package |
yum deplist package | |
Fedora | dnf info package |
dnf repoquery —requires package | |
FreeBSD (пакеты) | pkg info package |
FreeBSD (порты) | cd /usr/ports/category/port && cat pkg-descr |
Установка пакетов из репозиториев
Зная имя необходимого пакета, его можно очень быстро установить при помощи одной команды. Также в одной команде можно перечислить все пакеты, которые нужно установить.
Система | Команда |
Debian / Ubuntu | sudo apt-get install package |
sudo apt-get install package1 package2 … | |
sudo apt-get install -y package | |
CentOS | sudo yum install package |
sudo yum install package1 package2 … | |
sudo yum install -y package | |
Fedora | sudo dnf install package |
sudo dnf install package1 package2 … | |
sudo dnf install -y package | |
FreeBSD (пакеты) | sudo pkg install package |
sudo pkg install package1 package2 … | |
FreeBSD (порты) | cd /usr/ports/category/port && sudo make install |
Установка пакета из локальной файловой системы
Иногда разработчики или поставщики предлагают пакетные файлы для скачивания, даже если приложение официально не упаковано для данной операционной системы.
Как правило, такие пакеты можно загрузить при помощи веб-браузера или утилиты 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 |
Удаление пакетов
Менеджер пакетов знает, какие именно файлы предоставляет каждый конкретный пакет, потому с его помощью можно легко удалить все ненужные программы.
Предназначение Yum
Yum создан для решения следующих задач:
- Поиск пакетов в репозитариях
- Установка пакетов из репозиториев
- Установка пакетов из.rpm файлов, с разрешением зависимостей с помощью репозитариев
- Обновление системы
- Удаление не нужных пакетов
- Фактически, yum представляет собой оболочку для rpm обеспечивающую работу с репозиториями.
Основные операции над пакетами
Поиск в репозиториях
Для поиска в репозиториях с помощью yum используются три команды: list , search и provides .
Самый простой способ поиска - использование команды list . Команда list просматривает названия пакетов и их версии в поисках совпадений. Например, для просмотра пакетов с названием tsclient используйте:
Yum list tsclient
Команда search ищет в названии пакета и его описании указанную строку. Например, для поиска пакетов связанных с PalmPilot введите:
Yum search PalmPilot
Команда provides позволяет производить поиск пакетов содержащих указанный файл. Например, для поиска пакетов содержащих libneon введите:
Yum provides libneon
Все команды поиска поддерживают групповые символы? и * (экранируйте их символом \ для корректной обработки bash). К примеру, при для поиска пакетов начинающихся на tsc введите:
Yum list tsc\*
для поиска пакетов, содержащих файлы в директории /etc/httpd
Yum provides /etc/httpd\*
или для поиска определённых команд/программ, например для поиска mc(midnight commander)
Yum provides \*/mc
в результате получим следующий вывод
1:mc-4.7.4-1.fc14.i686: User-friendly text console file manager and visual shell Репозиторий: base Совпадения с: Имя файла: /usr/share/mc Имя файла: /usr/libexec/mc Имя файла: /etc/mc Имя файла: /usr/bin/mc
Установка пакетов с помощью Yum
Для установки пакетов с помощью yum используется параметр install
Для установки tsclient введите:
Yum install tsclient
Yum автоматически разрешит (если сможет) зависимости, и предложит установить их:
Установка пакетов из.rpm файлов
Для установки.rpm пакета с автоматическим разрешением зависимостей раньше использовалась команда localinstall . Теперь можно использовать обычный install . Так команда:
Yum install foo.rpm
автоматически найдет зависимости пакета foo.rpm в репозиториях (если сможет) и предложит их установить.
Может возникнуть проблема в отсутствии или неизвестной GPG подписи у RPM пакета, результатом чего будет отказ в установке и как следствие следующая ошибка
Публичный ключ для foo.rpm не установлен
Для того чтобы обойти это (в случае если Вы доверяете источнику предоставляющему пакет) необходимо выключить проверку GPG ключей, добавив в конце команды параметр --nogpgcheck
Обновление системы
Обновление системы осуществляется с помощью одной команды - update . Таким образом:
Yum update
обновит всю вашу систему. А команда
Yum update foo
При использовании обоих методов работоспособность сохраняется.
Использование Yum с прокси-сервером
Для того чтобы заставить Yum работать через прокси-сервер необходимо добавить следующий параметр в /etc/yum.conf:
Proxy=http://yourproxy:8080/
где - yourproxy это имя прокси-сервера, а 8080 это порт прокси-сервера. Если сервер требует аутентификации, вы можете указать логин как:
Proxy=http://username:password@yourproxy:8080/
RPM Package Manager позволяет использовать прокси-переменные среды. Это может быть задано в /etc/profile или специфизированно для конкретного пользователя в файле ~/.bash_profile::
Export http_proxy=http://yourproxy:8080/
export ftp_proxy=http://yourproxy:8080/
Для использования wget через прокси-сервер, добавте следующие строки в /etc/wgetrc
Http_proxy = http://yourproxy:8080/
ftp_proxy = http://yourproxy:8080/
В обоих случаях логин и пароль могут быть заданы как в примере выше.
Использование Yum для установки локального пакета, автоматически проверяя и удовлетворяя зависимости
yum --nogpgcheck localinstall packagename.arch.rpmОтображение приоритетов для всех установленных репозиториев
Вы можете получить список всех установленных у вас репозиториев - yum repolist all . Однако, он не показывает индекс приоритета. Вот строка необходимая для этого. Если номер не определен, по умолчанию, это самый низкий приоритет (99).
Cat /etc/yum.repos.d/*.repo | sed -n -e "/^\}