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

В двух словах зависимости — это описание взаимосвязи между пакетами в ситуации, когда один пакет предоставляет свои компоненты другому пакету и (или), в свою очередь, использует компоненты пакета третьего (в обоих случаях для слова пакет может использоваться множественное число).

Выделяется несколько категорий зависимостей. В частности, в терминах openSUSE их три: BuildRequires, Requires и Recommends.

BuildRequires — зависимости, требующиеся только при сборке пакета. Они сходны для большинства пакетов и в нашем случае обычно включают компилятор gcc, утилиты для сборки (binutils, make или cmake, patch etc.), пакеты с заголовочными файлами, архиваторы и компрессоры (cpio, tar, gzip, bzip2, xz), а также средства окончательной компоновки rpm-пакета — например, rpm-build. В ряде случаев необходимы также интерпретаторы языков сценариев типа Perl или Python, и devel-пакеты к ним.

Пользователю openSUSE совсем не обязательно иметь дело с BuildRequires, даже если он займётся самостоятельной сборкой или пересборкой пакетов. Для этих целей ему целесообразней воспользоваться системой OBS, которая уже поминалась ранее: она предоставит в его распоряжение весь потребный инструментарий. Однако от необходимости знания их она его не избавит. С другой стороны, если сборка пакетов не планируется — то ими можно вообще не забивать себе голову.

Requires — так называемые «жёсткие» зависимости, то есть пакеты, без которых данный пакет не может функционировать вообще. Как правило, это те самые библиотеки, о которых говорилось в предыдущей новелле, но не обязательно. Так, модули ядра часто бывают жёстко привязаны к определённой его разновидности. Например, существующие модули поддержки файловой системы ZFS собираются только для ядра default, с которым связаны «жёсткой» зависимостью, но не для ядра desktop, обычно устанавливаемого по умолчанию.

Recommends — так называемые «мягкие» зависимости. Они не критичны для функционирования пакета — удовлетворение их лишь добавляет ему дополнительные функции (например, печати и сканирования для офисных и графических приложений) или возможности (скажем, доступ к файлам данных определённых форматов для той же графики или мультимедиа). В openSUSE к Recommends относятся и пакеты, обеспечивающие для основного пакета поддержку языков, отличных от американского английского (например, для русского). Файлы таких пакетов имеют вид packagename-lang.

В отличие от дистрибутивов, использующих пакеты формата deb, в openSUSE (и других rpm based системах) разделение «мягких» зависимостей на рекомендованные (recommends) и предлагаемые (suggest) не предусмотрено: все они попадают в категорию Recommends.

Все три категории зависимостей прописываются в spec-файле пакета src.rpm и учитываются при его сборке. Но если после неё в зависимостях BuildRequires больше нет необходимости, то зависимости категорий Requires и Recommends должны разрешаться в момент установки бинарного rpm-пакета: первые — в обязательном порядке, вторые — в зависимости от предпочтений пользователя. По умолчанию и в zypper‘е, и в YaST2 рекомендуемые пакеты устанавливаются автоматически, но это можно изменить в их настройках.


Назад | К содержанию | Вперёд