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

Определение базового каталога

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

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

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

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

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

Базовый файл административных значений по умолчанию поставляется вместе с операционной системой SunOS и находится по следующему пути: /var/sadm/install/admin/default. Этот файл устанавливает самый простой уровень административной политики в отношении установки программных продуктов. Поставляемый файл выглядит следующим образом:

#ident "@(#)default
1.4 92/12/23 SMI"	/* SVr4.0 1.5.2.1	*/ 
mail=
instance=unique
partial=ask
runlevel=ask
idepend=ask
rdepend=ask
space=ask
setuid=ask
conflict=ask
action=ask
basedir=default

Администратор может редактировать этот файл и устанавливать новые значения по умолчанию. Он может также создать новый файл администрирования и указать на его наличие с помощью параметра -a команды pkgadd.

В файле администрирования можно при необходимости определить одиннадцать параметров. Для получения дополнительной информации см. страницу admin(4).

Параметр basedir указывает, каким образом будет извлечен базовый каталог при установке пакета. Большинство администраторов оставляют этот параметр со значением по умолчанию (default), однако для параметра basedir можно установить одно из следующих значений:


Примечание –

При вызове команды pkgadd с аргументом - a none команда всегда запрашивает администратора о размещении базового каталога. К сожалению, при этом все параметры в файле устанавливаются на значение по умолчанию quit, что может создать дополнительные сложности.


Устранение неопределенности

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

Разработчики пакетов иногда включают в поставку свой файл администрирования с тем, чтобы они, а не администраторы, контролировали установку пакета. Поскольку запись basedir в файле административных значений по умолчанию отменяет все другие базовые каталоги, это предоставляет простой способ выбора подходящего базового каталога во время установки. Во всех версиях ОС Solaris до выпуска Solaris 2.5 подобный способ контроля над базовым каталогом считался наиболее простым.

Однако следует принимать во внимание желания администраторов, которые хотят контролировать процесс установки продукта. Предоставление временного файла с административными значениями по умолчанию для контроля над установкой приводит к недоверию со стороны администраторов. Следует использовать сценарии request и checkinstall с тем, чтобы установка происходила под контролем администратора. Если сценарий request вовлекает в процесс установки администратора, организация пакетов System V облегчит работу как разработчиков, так и администраторов.

Использование параметра BASEDIR

Файл pkginfo для любого перемещаемого пакета должен включать базовый каталог по умолчанию в форме подобной записи:


BASEDIR=absolute_path

Это лишь базовый каталог по умолчанию; он может быть изменен администратором в ходе установки.

Хотя для некоторых пакетов требуется несколько базовых каталогов, преимущество использования этого параметра для размещения пакета состоит в том, что к моменту начала установки базовый каталог гарантированно будет на месте и доступным для записи как допустимый каталог. Правильный путь к базовому каталогу сервера и клиента доступен всем процедурным сценариям в форме зарезервированных переменных среды. Текущий базовый каталог установки отображается с помощью команды pkginfo -r SUNWstuf.

В сценарии checkinstall параметр BASEDIR существует точно в том виде, как он был определен в файле pkginfo (условия еще не были определены). Для проверки целевого базового каталога требуется конструкция ${PKG_INSTALL_ROOT}$BASEDIR. Это означает, что сценарии request и checkinstall могут изменять значение параметра BASEDIR в среде установки с предсказуемыми результатами. Ко времени вызова сценария preinstall параметр BASEDIR уже является полностью обусловленным указателем на действительный базовый каталог целевой системы, даже если эта система - клиент.


Примечание –

Сценарий request использует параметр BASEDIR по-разному в разных выпусках операционной системы SunOS. Чтобы осуществить проверку параметра BASEDIR в сценарии request, следует использовать следующий программный код, позволяющий определить фактический используемый базовый каталог.

# request script
constructs base directory
if [ ${CLIENT_BASEDIR} ]; then
	  LOCAL_BASE=$BASEDIR
else
	  LOCAL_BASE=${PKG_INSTALL_ROOT}$BASEDIR
fi

Использование параметрических базовых каталогов

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

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

Примеры. Использование параметрических базовых каталогов

Файл pkginfo

# pkginfo file
PKG=SUNWstuf
NAME=software stuff 
ARCH=sparc
VERSION=1.0.0,REV=1.0.5
CATEGORY=application
DESC=a set of utilities that do stuff
BASEDIR=/
EZDIR=/usr/stuf/EZstuf
HRDDIR=/opt/SUNWstuf/HRDstuf
VENDOR=Sun Microsystems, Inc.
HOTLINE=Please contact your local service provider
EMAIL=
MAXINST=1000
CLASSES=none
PSTAMP=hubert980707141632

Файл pkgmap

: 1 1758
1 d none $EZDIR 0775 root bin
1 f none $EZDIR/dirdel 0555 bin bin 40 773 751310229
1 f none $EZDIR/usrdel 0555 bin bin 40 773 751310229
1 f none $EZDIR/filedel 0555 bin bin 40 773 751310229
1 d none $HRDDIR 0775 root bin
1 f none $HRDDIR/mksmart 0555 bin bin 40 773 751310229
1 f none $HRDDIR/mktall 0555 bin bin 40 773 751310229
1 f none $HRDDIR/mkcute 0555 bin bin 40 773 751310229
1 f none $HRDDIR/mkeasy 0555 bin bin 40 773 751310229
1 d none /etc	? ? ?
1 d none /etc/rc2.d ? ? ?
1 f none /etc/rc2.d/S70dostuf 0744 root sys 450 223443
1 i pkginfo 348 28411 760740163
1 i postinstall 323 26475 751309908
1 i postremove 402 33179 751309945
1 i preinstall 321 26254 751310019
1 i preremove 320 26114 751309865

Управление базовым каталогом

Любой пакет, существующий в нескольких версиях или для нескольких архитектур, должен, при необходимости, иметь возможность увода базового каталога. Увод базового каталога означает, что если в базовом каталоге уже существует предыдущая версия или другая архитектура устанавливаемого пакета, устанавливаемый пакет решает эту проблему, создавая, например, новый базовый каталог со слегка отличающимся именем. Сценарии request и checkinstall в Solaris 2.5 и совместимых выпусках имеют возможность изменять переменную среды BASEDIR. Однако такая возможность отсутствует в более ранних версиях ОС Solaris.

Даже в более старых версиях операционного окружения Solaris сценарию request были доступны полномочия на переопределение каталогов в пределах базового каталога установки. Сценарий request может делать это и сейчас, поддерживая большинство административных предпочтений.