portrait

Поиск



[software] [catdoc] [tcl] [geography] [old things]

Создание пакетов Solaris

Все уже привыкли, что правильный способ сборки и установки программ под POSIX-совместимые операционные системы - это создать родной для этой системы пакет, и его установить

Установка программ из пакетов имеет ряд преимуществ.

  • Пакет обычно имеет список зависимостей. Это значит, что устанавливая пакет на новую машину, вы не забудете важный сторонний компонент, без которого ничего работать не будет.
  • Пакет может быть аккуратно удален средствами package manager-а системы. Соответственно, можно спокойно экспериментировать. Вернуть систему в исходное состояние вы всегда сумеете.
  • Как правило, процесс сборки производится без использования прав суперпользователя. Повышенные привилегии нужны только при установке/удалении пакета
  • Нетривиальные действия, необходимые для обеспечения работоспособности системы после установки, можно описать в скриптах, которые будут автоматически выполнены менеджером пакетов.
Так происходит в Linux, почти так - во FreeBSD (там чаще используются порты. Хотя процесс сборки порта включает в себя создание пакета, бинарные пакеты для FreeBSD распротраняются довольно редко)

В ОС Solaris тоже есть система управления пакетами, используемая при установке системы. Она обладает почти всеми теми же возможностями, что и пакетные менеджеры Linux. Правда, основные известные репозитории opensource пакетов для Solaris - SunFreeware и BlastWave используют возможности пакетной системы Solaris далеко не на полную мощность. Sunfreeware например, почти не прописывает зависимостей в пакеты.

Кроме того, практически никто не распространяет исходников пакетов. Поэтому научиться делать правильные пакеты для Solaris, посмотрев как это умные люди делают, достаточно нетривиально.

Правда, в установленной системе Solaris в каталоге /var/sadm/pkg хранится метаинформация по всем установленным пакетам фирмы Sun, входящим в дистрибутив системы. Именно это и следует рассматривать как основной источник примеров сборки пакетов.

Структура пакета Solaris

Пакет Solaris может существовать в двух "агрегатных состояниях"
  • в виде директории которая дублирует установленное дерево соответствующего пакета и содержит дополнительные служебные файлы. Именно в таком виде пакеты распространяются на дистрибутивных CD Solaris
  • в виде потока данных (datastream), т.е. фактически то же самое, но заархивированное. Один datastream может содержать много пакетов. В таком виде пакеты некогда распространялись на магнитных лентах, и в таком виде они теперь раздаются на скачивание с сайтов вроде SunFreeware.

Преобразование пакетов между двумя этими форматами выполняется с помощью утилиты pkgtrans.

Помимо собственно файлов устанавливаемого приложения, пакет содержит файлы с управляющей информацией. Они включают в себя описание пакета (pkginfo), список файлов (pkgmap), список зависимостей (depend) и скрипты, выполняемые при установке/удалении пакета.

Пакетная система Solaris поддерживает ситуацию, когда файл (обычно директория) принадлежит сразу нескольким пакетам.

Особенности сборки программ под Solaris

32 и 64 бита

Описания сервисов

Иерархия файловой системы

Стандартный путь создания пакетов Solaris

Временное дерево инсталляции

Для создания пакета необходимо в первую очередь получить дерево файлов, которые будут в этот пакет входить. Для этого можно, например сказать make install в сборочной директории, указав с помощью параметра DESTDIR, prefix или что там поддерживает система сборки данного приложения, что устанавливать надо в определенную директорию. Если у вас есть файл .spec для сборки данного пакета в RPM или служебные файлы для сборки в пакет Debian, можно посмотреть там.

Создание файла pkginfo

После этого нужно создать файл pkginfo.

Создание файла depends

Скрипты инсталляции и деинсталляции

Файл prototype

Выполнение pkgmk

Скрипты, облегчающие сборку пакетов

Скрипт fixproto

Скрипт mkdepend

Пример сборки