Управление пакетами

(перенаправлено с «Package management»)
Перейти к: навигация, поиск
Дистрибутивы Linux, в том числе openSUSE, состоят из комплекса программ, представленных в формате пакетов, и необходимого инструментария по управлению этим комплексом.

Обзор

Packagemanagement.png

Система управления пакетами — это набор инструментов, обеспечивающий унифицированный метод установки, обновления и удаления программного обеспечения в вашей системе. Дистрибутивы 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 по лицензионным причинам. Пакеты в таких репозиториях, скорее всего, меньше тестировались, чем официальные.

Смотрите также


Внешние ссылки