Управление пакетами
Содержание
Обзор
Система управления пакетами — это набор инструментов, обеспечивающий унифицированный метод установки, обновления и удаления программного обеспечения в вашей системе. Дистрибутивы Linux, включая openSUSE, обычно состоят из тысяч отдельных пакетов программ.
Программное обеспечение распространяется через пакеты с прикрепленными метаданными, в которых содержится дополнительная информация: описание назначения пакета, список зависимостей, необходимых для нормальной работы программы, и т.д. Пакеты хранятся в репозиториях, локальных (CD, DVD или жёсткий диск) или сетевых хранилищах. После установки пакета его метаданные сохраняются в локальной базе данных и используются для поиска файлов пакета.
Libzypp — это реализация подобной системы управления пакетами для openSUSE, к ней предоставляется графический интерфейс пользователя YaST Software Management и интерфейс командной строки Zypper.
Пакеты
Пакеты — это архивы файлов, содержащие все компоненты приложений (сами приложения, разделяемые библиотеки, пакеты для разработки приложений и т.д.) и инструкции по их запуску и настройке.
Пакет интегрирован в дистрибутив, для которого он был собран, с учётом путей установки, зависимостей, интеграции со средой, скриптов запуска для серверов и т.п. Поэтому всегда следует устанавливать пакеты, собранные именно для вашего дистрибутива и его версии (например openSUSE 11.1). Не стоит применять пакеты Fedora в openSUSE и даже пакеты openSUSE 11.1 в openSUSE 11.2 (хотя работоспособность последних иногда возможна).
Метаданные пакетов
Пакет также содержит дополнительные сведения, обычно называемые Метаданными. В них входят:
- аннотация
- описание
- список содержимого пакета
- номера версии программы и релиза пакета
- когда, где и кем собран пакет
- для какой архитектуры предназначена сборка
- контрольные суммы файлов
- лицензии на программы
- сведения о зависимостях
- прочее
Зависимости пакетов
Важная функция пакетов — описание взаимосвязей приложений. Поскольку приложения требуют для своего выполнения определённого рабочего окружения (других программ, библиотек и т.п.), пакеты могут предоставлять файлы, предназначенные для использования в других пакетах. Зависимости пакетов используются для выражения таких связей.
Например, пакет А может требовать наличия установленных пакетов Б, В, Г для корректной работы.
- Пакетные зависимости транзитивны, то есть в случае зависимости А от Б и Б от В для установки А потребуются и Б, и В. Так что не удивляйтесь, если для установки всего лишь одного приложения может потребоваться установка множества пакетов.
- Типичны библиотечные зависимости. Практически каждое отдельное приложение требует нескольких библиотек. Обычно названия пакетов, содержащих библиотеки, начинаются с "lib".
Использование системы пакетов — важное свойство дистрибутивов Linux (а также BSD- и Unix-систем), обеспечивающее модульный подход к управлению операционной системой и приложениями. Например, пакет openssl содержит криптографические библиотеки, используемые множеством прочих приложений и библиотек (для SSL-шифрования и пр.). После выхода свежей версии openssl с улучшениями и исправлениями, все приложения, его использующие, получат новые возможности в результате лишь единственного обновления данного пакета.
Такой подход очень эффективен для поддержания стабильности и защищённости системы: если исправлена уязвимость в библиотеке, используемой другими приложениями, её обновление закроет данную уязвимость для всех пакетов.
Форматы пакетов
Программное обеспечение для Linux чаще всего распространяется в одном из следующих форматов:
- tgz (файлы tar gzip). Это просто архивы. Они могут содержать всё, что разработчик считает нужным. Кроме самого формата архива, никаких стандартов на структуру содержимого не существует.
- deb (Debian). Формат пакетов, принятый в Debian и его производных дистрибутивах.
- rpm (Менеджер пакетов RPM ). Созданный Red Hat и принятый LSB в качестве стандарта, rpm используется openSUSE и многими другими дистрибутивами.
Сам по себе формат пакетов не предоставляет управления зависимостями, а лишь сообщает об их наличии, предоставляя пользователю самому разбираться с установкой необходимых компонентов, если они отсутствуют.
Предположим, что вы хотите установить пакет А, который зависит от пакета Б. RPM не установит пакет Б автоматически, но сообщит, что он требуется для установки А, и прекратит работу. Пользователь должен сам сперва установить Б, а затем сможет установиться А. Несложно? Теперь представьте, что пакет Б зависит от пакетов В и Г, а Г зависит от Д, а Д от ... и так далее. В итоге вам потребуется вручную отследить все ветви, возможно, немаленького дерева зависимостей.
Решение этой проблемы есть и называется оно менеджер пакетов.
Менеджер пакетов
В современных дистрибутивах, таких как openSUSE, установку программ лучше всего делать с помощью менеджера пакетов. Функционируя поверх RPM, он получает пакеты из репозиториев ( интернет-сервера, CD, DVD, ...), находит зависимости и устанавливает их в вашу систему. Менеджер пакетов также упрощает удаление и обновление пакетов. Объём доступного программного обеспечения зависит от репозиториев, которые вы подключили.
Родным менеджером пакетов openSUSE является модуль YaST Software Management и программа командной строки Zypper, но в дистрибутиве содержатся и другие инструменты управления пакетами. Некоторые из них работают только с RPM, другие покрывают более широкий спектр возможностей.
Репозитории пакетов
Перед установкой пакетов репозитории должны быть доступны в вашей системе — или с дисков, или через интернет.
Репозитории openSUSE бывают:
- Официальные — в них входят хорошо протестированные и поддерживаемые пакеты.
- Сторонние, такие как Packman и репозитории Build Service. В них содержатся различные дополнительные пакеты, некоторые имеют более новые версии, чем в дистрибутиве, некоторые не могут быть включены в openSUSE по лицензионным причинам. Пакеты в таких репозиториях, скорее всего, меньше тестировались, чем официальные.
Смотрите также
Внешние ссылки
- openSUSE-Community об управлении пакетами
- Wikipedia и Википедия об управлении пакетами
- Поиск ПО в Open Build Service
- Поиск ПО в Webpin