Руководство разработчика по пакетированию приложений

Глава 1 Разработка пакета

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

Ниже приведен перечень вопросов, рассмотренных в данной главе.

Где найти задачи по пакетированию

Ниже приведены карты задач с поэтапными указаниями для сборки и проверки пакетов.

Что такое пакеты?

Прикладное программное обеспечение поставляется в виде блоков, называемых пакетами. Пакет - это набор файлов и каталогов, требуемых для работы программного продукта. Пакет обычно разрабатывается и собирается разработчиком приложения после завершения разработки кода приложения. Программный продукт необходимо объединить в один или несколько пакетов для того, чтобы его легче было переносить на распространяемый носитель. После этого программный продукт может быть тиражирован и установлен администраторами.

Пакет - это набор файлов и каталогов в определенном формате. Этот формат соответствует двоичному интерфейсу приложений (ABI), являющемуся частью определения интерфейса System V.

Компоненты пакета

Существуют две категории компонентов пакета:

Контрольные файлы также разделены на две категории: информационные файлы и сценарии установки. Некоторые контрольные файлы являются обязательными. Некоторые контрольные файлы являются необязательными.

Перед созданием пакета приложений необходимо создать обязательные и необязательные компоненты, которые будут составлять пакет. После этого можно выполнить сборку пакета с помощью команды pkgmk.

Для сборки пакета необходимо иметь следующее.

На рисунке ниже описано содержимое пакета.

Рисунок 1–1 Содержимое пакета

Описание чертежа приведено в предшествующем и последующем контекстах.

Обязательные компоненты пакета

Перед сборкой пакета необходимо создать следующие компоненты.

Необязательные компоненты пакета

Информационные файлы пакета

В пакет можно включить четыре необязательных информационных файла:

Каждый информационный файл пакета должен иметь запись в файле prototype. Для получения дополнительной информации о создании этих файлов см. раздел Создание информационных файлов.

Сценарии установки пакета

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

Существуют четыре типа сценариев.

Для получения дополнительной информации о сценариях установки см. раздел Создание сценариев установки.

Что следует принять во внимание перед сборкой пакета

Перед сборкой пакета необходимо решить, будет ли ваш продукт состоять из одного или нескольких пакетов. Обратите внимание, что установка нескольких маленьких пакетов занимает больше времени, чем установка одного большого пакета. Несмотря на то, что создание одного пакета более рационально, это не всегда возможно. Если принято решение собрать несколько пакетов, следует определить, каким образом сегментировать код приложения. В данном разделе представлен перечень критериев, которые необходимо использовать при планировании сборки пакета.

Многие критерии по созданию пакета предполагают компромисс между ними. Удовлетворить все требования в равной степени часто очень сложно. Критерии представлены по степени их важности. Однако эта последовательность служит лишь примерным руководством, и ее можно изменить в зависимости от обстоятельств. Хотя каждый из этих критериев является важным, вопрос о том, как оптимизировать эти потребности для получения хорошего набора пакетов, разработчику предстоит решать самому.

Дополнительные идеи по разработке пакетов содержатся в Глава 6Дополнительные методы создания пакетов.

Пакеты должны иметь возможность удаленной установки

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

Оптимизация для клиент-серверных структур

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

Разделение на пакеты в соответствии с функциональностью

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

Пакеты должны быть упорядочены в функциональные блоки с точки зрения потребителя.

Разделение на пакеты в соответствии с лицензионным режимом

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

Разделение на пакеты в соответствии с зависимостями от системы

Сохраняйте зависимые от системы двоичные файлы в отдельных пакетах. Например, код ядра должен находиться в отдельном пакете, а каждая реализуемая архитектура состоять из отдельного экземпляра пакета. Это правило применимо также к двоичным файлам для различных архитектур. Например, двоичные файлы для системы SPARC будут находиться в одном пакете, а файлы для системы x86 - в другом.

Предотвращение перекрытия пакетов

При создании пакетов старайтесь по возможности избегать дублирования файлов. Ненужное дублирование приводит к сложностям в обслуживании и проблемам с версиями файла. Если продукт состоит из нескольких пакетов, постоянно сравнивайте содержимое этих пакетов для выявления дублированных файлов.

Разделение на пакеты в соответствии с локализацией

Элементы локализации должны находиться в отдельном пакете. При идеальном разделении на пакеты все локализации продукта должны поставляться по схеме: одна национальная настройка - один пакет. К сожалению, в некоторых случаях организационные критерии конфликтуют с функциональными критериями и критериями разделения на продукты.

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

Пакеты системы IPS

В этом документе приведено описание пакетов SVR4. Если предполагается использование в ОС OpenSolaris, можно воспользоваться пакетами системы IPS (Image Packaging System). В ОС OpenSolaris реализована поддержка пакетов SVR4 и IPS. Система IPS взаимодействует с сетевыми хранилищами и использует файловую систему ZFS. В ОС OpenSolaris доступна возможность публикации существующих пакетов SVR4 в хранилище IPS с помощью команды pkgsend(1).

В следующей таблице представлено сравнение команд для систем пакетирования SVR4 и IPS. Для получения более подробной информации о IPS см. документ Getting Started With the Image Packaging System (Начало работы с системой IPS).

Таблица 1–1 Задачи пакетирования: IPS и SVR4

Задача 

Команда IPS 

Команда SVR4 

Установка нового пакета 

pkg install

pkgadd -a

Просмотр информации о состоянии пакета 

pkg list

pkginfo

Проверка правильности установки пакета 

pkg verify

pkgchk -v

Просмотр информации о пакете 

pkg info

pkginfo -l

Просмотр списка содержимого пакета 

pkg contents

pkgchk -l

Удаление пакета 

pkg uninstall

pkgrm

Команды, файлы и сценарии, используемые при создании пакета

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

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

Таблица 1–2 Команды для пакетов

Задача 

Команда/ справочная страница 

Описание 

Дополнительная информация 

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

pkgproto(1)

Создает файл prototype для ввода в команду pkgmk

Пример. Создание файла prototypeс помощью команды pkgproto

pkgmk(1)

Создает устанавливаемый пакет 

Сборка пакета

 

Установка, удаление и перенос пакетов 

pkgadd(1M)

Устанавливает пакет ПО в систему 

Установка пакетов ПО

pkgask(1M)

Сохраняет ответы на сценарий запроса request

Правила разработки сценариев request

 

pkgtrans(1)

Копирует пакеты на распространяемый носитель 

Запись пакета на распространяемый носитель

 

pkgrm(1M)

Удаляет пакет из системы 

Удаление пакета

 

Получение информации о пакетах 

pkgchk(1M)

Проверяет целостность пакета ПО 

Проверка целостности пакета

pkginfo(1)

Отображает информацию о пакете ПО 

Команда pkginfo

 

pkgparam(1)

Отображает значения параметров пакета 

Команда pkgparam

 

Изменение установленных пакетов 

installf(1M)

Внедряет новый объект пакета в уже установленный пакет 

Правила разработки процедурных сценариев и Глава 5Практические примеры создания пакета

removef(1M)

Удаляет объект пакета из уже установленного пакета 

Правила разработки процедурных сценариев

 

В таблице ниже представлены информационные файлы, помогающие собрать пакет.

Таблица 1–3 Информационные файлы пакета

Файл 

Описание 

Дополнительная информация 

admin(4)

Файл со значениями по умолчанию для установки пакета 

Файл административных значений по умолчанию

compver(4)

Файл совместимости пакета 

Определение зависимостей пакета

copyright(4)

Информация об авторских правах пакета 

Создание сообщения об авторских правах

depend(4)

Файл зависимостей пакета 

Определение зависимостей пакета

pkginfo(4)

Файл характеристик пакета 

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

pkgmap(4)

Файл описания содержимого пакета 

Файл pkgmap

prototype(4)

Информационный файл пакета 

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

space(4)

Файл с информацией о требуемом месте на диске для пакета 

Резервирование дополнительного места на диске на целевой системе

В приведенной ниже таблице представлены необязательные сценарии установки, которые влияют на процесс установки пакета.

Таблица 1–4 Сценарии установки пакета

Сценарий 

Описание 

Дополнительная информация 

request

Запрашивает информацию у установщика 

Создание сценария request

checkinstall

Собирает данные о файловой системе 

Сбор данных о файловой системе с помощь сценария checkinstall

preinstall

Выполняет требования клиентской установки перед установкой класса 

Создание процедурных сценариев

postinstall

Выполняет требования клиентской установки после того, как все тома установлены 

Создание процедурных сценариев

preremove

Выполняет требования клиентской установки перед удалением класса 

Создание процедурных сценариев

postremove

Выполняет требования клиентской установки после того, как все классы были удалены 

Создание процедурных сценариев

Действие над классом 

Выполняет ряд действий над определенной группой объектов 

Создание сценариев действий над классами