Создание пакетов программного обеспечения для установки

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

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

Установочный пакет представляет собой файл в формате backup, в который входят собственно файлы программного продукта, управляющие файлы и, иногда, файлы для настройки процедуры установки. Для установки и обновления программных продуктов применяется команда installp.

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

Обновлением или пакетом обновлений называется пакет, при установке которого вносятся изменения в уже установленный набор файлов.

Стандартной системой в этом разделе называется любая система, за исключением бездисковых систем.

Требования к процедуре установки

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

Требования к управляющей информации

Управляющая информация пакета должна включать следующие сведения:

  • Все требования устанавливаемых наборов файлов к прочим наборам файлов.
  • Все требования устанавливаемых наборов файлов к размеру файловых систем.

Формат установочного пакета

Установочный пакет должен представлять собой файл в формате backup, который команда installp сможет восстановить во время установки. Этот файл может поставляться на ленте, дискетах или на компакт-дисках.

Требования к компоновке пакетов

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

При установке компонента root содержимое файловой системы /usr изменяться не должно. Во время установки компонента root на бездисковых клиентах или клиентах без данных запись в файловую систему /usr будет запрещена. Машинно–зависимый (корневой) компонент должен включать в себя все файлы, не находящиеся в файловых системах /usr или /opt.

Пакеты в разделах рабочей схемы

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

Если набор файлов не предназначен для установки в разделе рабочей схемы, то в файле lpp_name следует указать атрибут PRIVATE.

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

Если в случае установки в WPAR требуется другая конфигурация набора файлов, то может потребоваться дополнительная настройка при создании WPAR из системной копии, поскольку изначально набор файлов не был установлен в WPAR. Владельцы наборов файлов могут создать программы в каталогах /usr/lib/wpars/wparconvert.d/usr и /usr/lib/wpars/wparconvert.d/root, позволяющие преобразовать компоненты usr и root для поддержки системной копии WPAR. Все исполняемые файлы в этих каталогах выполняются в алфавитном порядке (локаль C) при первом запуске системной копии WPAR.

Данные реестра программного обеспечения

Информация о программном продукте и его компонентах хранится в базе данных Реестра программного обеспечения (SWVPD). SWVPD содержит набор команд и классы объектов Администратора объектных данных (ODM), предназначенные для обслуживания информации о программном продукте. Команды SWVPD позволяют пользователю запросить (lslpp) и проверить (lppchk) информацию об установленных программных продуктах. Объектные классы ODM задают диапазон и формат этой информации.

С помощью Администратора объектных данных команда installp добавляет в базу данных SWVPD следующую информацию:

  • Имя программного продукта (например, bos.adt)
  • Версия программного продукта
  • Выпуск программного продукта, который определяет, какие изменения были внесены во внешний программный интерфейс продукта
  • Уровень модификации программного продукта, который определяет, какие изменения, не связанные с внешним программным интерфейсом, были внесены в продукт
  • Уровень исправления программного продукта, который определяет небольшие обновления, которые будут добавлены в продукт следующего уровня модификации
  • Имена, контрольные суммы и размеры файлов, входящих в программный продукт или его компонент
  • Состояние программного продукта: доступен, устанавливается, установлен, фиксируется, зафиксирован, аннулируется или содержит ошибку
  • Уровень обслуживания и информацию APAR
  • Имя целевого каталога и программы установки для пакетов программного обеспечения, устанавливаемых без применения команды installp (если применимо).

Компоненты установочного пакета

Для поддержки среды клиент-сервер установочный пакет должен быть разделен на следующие компоненты:
usr
Содержит файлы, которые могут одновременно использоваться несколькими системами с совместимыми аппаратными платформами. В стандартной системе эти файлы хранятся в файловой системе /usr или /opt.
корневой
Содержит файлы, которые не могут использоваться в нескольких системах. На каждом клиенте устанавливается собственная копия этого компонента. Как правило, в компонент root входят файлы, связанные с конфигурацией конкретной копии продукта в конкретной системе. В стандартной системе файлы компонента root хранятся в корневой файловой системе (/). Компонент root набора файлов должен поставляться в том же установочном пакете, что и компонент usr. Если набор файлов содержит компонент root, то он должен содержать и компонент usr.

Краткое описание файловых систем

Ниже приведено краткое описание ряда файловых систем и каталогов. Оно поможет вам при разделении пакета на компоненты root, usr и share.

Некоторые каталоги, относящиеся к компоненту root:

/dev
Файлы устройств локальной системы
/etc
Файлы конфигурации (например, hosts и passwd)
/sbin
Системные утилиты, необходимые для загрузки системы
/var
Файлы данных и протоколы, относящиеся к локальной системе

Некоторые каталоги, относящиеся к компоненту usr:

/usr/bin
Команды и сценарии (обычные исполняемые файлы)
/usr/sbin
Команды администрирования системы
/usr/include
Файлы include
/usr/lib
Библиотеки, прочие команды и данные, зависящие от архитектуры конкретной системы
/opt
Библиотеки, прочие команды и сценарии, связанные с продуктами, отличными от операционной системы

Соглашения о присвоении имен пакетам и наборам файлов

При выборе имен для пакета программ и наборов файлов следуйте следующим рекомендациям:
  • Имя пакета (Пакет) должно начинаться с названия продукта. Если пакет состоит из одного набора файлов, имя набора файлов может совпадать с именем пакета (Пакет). Имена всех пакетов должны быть уникальными.
  • Имена наборов файлов должны быть заданы в следующем формате:
    ИмяПродукта.ИмяПакета.ИмяНабораФайлов.расширение
    где:
    • ИмяПродукта обозначает продукт или группу решений.
    • ИмяПакета обозначает функциональную группу внутри продукта.
    • ИмяНабораФайлов (необязательно) обозначает отдельный устанавливаемый функциональный набор файлов и библиотек.
    • Расширение (необязательно) служит для более точного описания содержимого.
  • Имя набора файлов должно содержать не менее 2 символов и начинаться с буквы.
  • Имена наборов файлов должны состоять только из символов ASCII. Допустимыми символами являются строчные и прописные буквы, цифры, символы подчеркивания ( _ ), знаки плюс и минус ( + - ). Точка ( . ) используется в качестве разделителя в имени набора файлов.
  • Имя набора файлов не может заканчиваться точкой или запятой.
  • Длина имени набора файлов не должна превышать 144 байта.
  • Имена всех наборов файлов в составе пакета должны быть различными.
Табл. 1. Соглашения об именах расширений наборов файлов
Расширение Описание набора файлов
.adt Средства разработки приложений
.com Общий код, необходимый для работы нескольких наборов файлов
.compat Средства обеспечения совместимости, которые могут быть удалены в следующих версиях
.diag Поддержка средств диагностики
.fnt Шрифты
.help. Язык Файлы справки CDE для указанного языка

Особые соглашения о присвоении имен пакетам с драйверами

Команда cfgmgr (администратор настройки) автоматически устанавливает драйверы обнаруженных в системе устройств, если эти драйверы записаны на установочном носителе. При этом имена драйверов должны быть заданы в следующем формате:
устройства.ид-типа-шины.ид-карты.расширение
где:
  • тип-шины задает тип шины, к которой подключается карта (например, для PCI это будет pci)
  • карта задает уникальный шестнадцатеричный идентификатор типа карты
  • Расширение указывает часть драйвера (например, rte - это расширение для выполнения, а diag - для диагностики.)

Например, карте Ethernet для шины PCI в администраторе настройки соответствует идентификатор 1410bb02. Соответствующему пакету драйверов должно быть присвоено имя devices.pci.1410bb02. Набор файлов среды выполнения, входящий в состав этого пакета, должен называться devices.pci.1410bb02.rte.

Особые соглашения о присвоении имен каталогам сообщений

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

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

Например, продукт Super_Widget может состоять из групп наборов файлов plastic и metal. Все каталоги сообщений продукта Super_Widget на русском языке могут поставляться в одном наборе файлов Super_Widget.msg.ru_RU. Если для групп наборов файлов plastic и metal требуются разные каталоги сообщений, то они могут поставляться в двух наборах файлов - Super_Widget.msg.en_US.plastic и Super_Widget.msg.en_US.metal.

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

Имена файлов

Имена файлов, поставляемых в составе установочных пакетов, не должны содержать запятых и двоеточий. Эти символы используются в качестве разделителей в управляющих файлах сценариев установки. Следует дополнительно отметить, что в именах файлов могут применяться символы, не входящие в набор ASCII. Длина полного пути к файлу не должен превышать 128 символов.

Идентификатор уровня набора файлов

Уровень набора файлов, который также называется уровнем, v.r.m.f или VRMF, задается в следующем виде:
версия.выпуск.модификация.уровень-исправления
где:
  • Версия - это номер версии, содержащий 1 или 2 цифры.
  • Выпуск - это номер выпуска, содержащий 1 или 2 цифры.
  • Модификация - это номер модификации, содержащий от 1 до 4 цифр.
  • Уровень-исправления - это номер уровня исправления, содержащий от 1 до 4 цифр.

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

Рекомендуется присваивать всем наборам файлов в пакете один и тот же уровень, хотя в пакетах формата AIX 4.1 это не обязательно.

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

Самой старшей считается первая цифра уровня, самой младшей - последняя (то есть, уровень 5.2.0.0 выше уровня 4.3.0.0).

Состав пакета программного обеспечения

В этом разделе описаны файлы, входящие в установочные пакеты. Каталоги, в которых находятся эти файлы, зависят от типа установочного пакета. Если в обновлении в качестве одного из компонентов пути указано имя-пакета, то оно заменяется на последовательность имя-пакета/имя-набора-файлов/уровень-набора-файлов.

В компонент usr установочного пакета входят следующие файлы управления установкой:
  • ./lpp_name: В этом файле содержится информация об устанавливаемом или обновляемом пакете. В целях повышения производительности рекомендуется помещать файл lpp_name в начало архивного установочного файла.
  • ./usr/lpp/Пакет/liblpp.a: В этом архивном файле содержатся управляющие файлы, применяемые для установки или обновления компонента usr пакета программного обеспечения.
  • Архив, в котором содержатся все новые и обновленные файлы, относящиеся к компоненту usr устанавливаемого продукта. Файлы хранятся в этом архиве в виде дерева (с указанием абсолютного пути к каждому из них).
Если в установочном пакете есть компонент root, то в него должны входить следующие файлы:
  • ./usr/lpp/Пакет/inst_root/liblpp.a : В этом библиотечном файле содержатся управляющие файлы, применяемые для установки или обновления компонента root пакета программного обеспечения.
  • Данный файл представляет собой архив, в который входят все новые и обновленные файлы, относящиеся к компоненту root устанавливаемого пакета. Если пакет предназначен для установки базового уровня продукта, то эти файлы должны быть помещены в архив с сохранением относительного пути от каталога ./usr/lpp/Пакет/inst_root

Примеры пакетов программного обеспечения

Пакет farm.apps содержит набор файлов farm.apps.hog 4.1.0.0. Набор farm.apps.hog 4.1.0.0 состоит из следующих файлов:
/usr/bin/raisehog (из компонента usr)
/usr/sbin/sellhog
 (из компонента usr)

/etc/hog
 (из компонента root)
Пакет farm.apps должен содержать, как минимум, следующие файлы:
./lpp_name
./usr/lpp/farm.apps/liblpp.a
./usr/lpp/farm.apps/inst_root/liblpp.a
./usr/bin/raisehog
./usr/sbin/sellhog
./usr/lpp/farm.apps/inst_root/etc/hog
Предположим, что обновление farm.apps.hog 4.1.0.3 заменяет следующие файлы:
/usr/sbin/sellhog
/etc/hog
В этом случае установочный пакет обновления должен содержать следующие файлы:
./lpp_name
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/liblpp.a
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/inst_root/liblpp.a
./usr/sbin/sellhog
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/inst_root/etc/hog
Прим.: Файл из компонента root в установочном пакете находится в каталоге inst_root. Файлы, относящиеся к компоненту root пакета, зависящему от системы, должны находиться в каталоге inst_root. Эти файлы устанавливаются в корневой файловой системе каждой системы, на которой устанавливается пакет. Фактически они просто копируются в корневую файловую систему из каталога inst_root. Напомним, что компонент usr состоит из файлов, которые могут одновременно использоваться несколькими компьютерами.

Информационный файл lpp_name

Информационный файл lpp_name должен содержаться в каждом установочном пакете. Из файла lpp_name команда installp получает информацию о самом пакете и всех входящих в него наборах файлов. Пример файла lpp_name для пакета с обновлением приведен на следующем рисунке. Цифры и стрелки на этом рисунке соответствуют полям приведенной ниже таблицы.

Табл. 2. Поля файла lpp_name
Имя поля Формат Separator Описание
1. Формат Целочисленный Пробел Указывает версию программы installp, для которой предназначен данный пакет. Возможны следующие значения:
  • 1 - AIX 3.1
  • 3 - AIX 3.2
  • 4 - AIX 4.1 и более поздние
2. Платформа Символ Пробел Указывает платформу, для которой предназначен пакет. Возможны следующие значения:
  • R - RISC
  • I - Intel
  • N - без учета
3. Тип пакета Символ Пробел Указывает категорию (базовый набор файлов или обновление) и тип пакета. Возможны следующие значения:
  • I - Базовый набор файлов
  • S - Простое обновление
  • SR - Обязательное простое обновление
  • ML - Обновление уровня обслуживания
4. Имя пакета Символ Пробел Имя пакета программного обеспечения (Пакет).
  { Символ новой строки Указывает начало описания конкретного набора файлов.
5. Имя набора файлов Символ Пробел Полное имя набора файлов. Это значение указывается в начале заголовка набора файлов или обновления набора файлов.
6. Уровень См. описание Пробел Уровень устанавливаемого набора файлов. Формат: версия.выпуск.модификация.уровень-исправления
Прим.: Уровень можно указать следующим образом: <, > и =. Пример: *prereq bos.rte v<5 или *prereq bos.rte v=5 r=3.
7. Том Целочисленный Пробел Номер тома, на котором находится набор файлов (если он поставляется на многотомном носителе).
8. Bosboot Символ Пробел Указывает, нужно ли выполнить bosboot после завершения установки. Возможны следующие значения:
  • N - bosboot не требуется
  • b - bosboot требуется
9. Состав Символ Пробел Указывает, какие компоненты входят в набор файлов. Возможны следующие значения:
  • B - usr и root
  • U - только usr
10. Язык Символ Пробел Должно быть установлено значение, отображаемое при выборе локали C. Обычно это en_US (для русского языка - ru_RU).
11. Описание Символ # или символ новой строки Описание набора файлов. Его длина ограничена 60 символами.
12. Комментарии Символ Символ новой строки Необязательные дополнительные комментарии.
  [ Символ новой строки Указывает начало тела описания набора файлов.
13. Информация о зависимостях Описан далее в этой главе Символ новой строки (Необязательно) Зависимости устанавливаемого набора файлов от других наборов файлов или от их обновлений. Подробное описание этого поля приведено вслед за этой таблицей.
  % Символ новой строки Разделяет поля зависимостей и размера.
14. Размер и сведения о лицензионном соглашении Описано далее в этом разделе Символ новой строки Сведения о размере и лицензионных соглашениях для каждого каталога набора файлов. Подробные сведения об этом приведены в разделе Информация о размере и лицензионных соглашениях далее в этой главе.
  % Символ новой строки Разделяет поля размера и информации о лицензии.
  % Символ новой строки Разделяет поля заменяемого ПО и информации о лицензии.
15. Информация о заменяемом ПО Описано далее в этом разделе Символ новой строки Информация о наборе файлов, заменяемом при установке
  % Символ новой строки Разделяет поля информации о лицензии и исправлении.
16. Информация об исправлениях Описано далее в этом разделе Символ новой строки Информация о том, какие исправления содержатся в устанавливаемом обновлении. Подробные сведения об этом приведены в разделе Информация об исправлении далее в этой главе.
  ] Символ новой строки Указывает конец тела описания набора файлов.
  } Символ новой строки Указывает конец описания набора файлов.
       
Табл. 3. Примеры
1 23    4
| ||    |                6         7 8 9  10       11
4 RSfarm.apps {  |       |         | | |   |        |
 5--> farm.apps.hog04.01.0000.0003 1 N U en_US Hog Utilities 
12--># ...      
[
13--> *ifreq bos.farming.rte (4.2.0.0) 4.2.0.15
%
14--> /usr/sbin 48
14--> /usr/lpp/farm.apps/farm.apps.hog/4.1.0.3 280
14--> /usr/lpp/farm.apps/farm.apps.hog/inst_root/4.1.0.3.96
14--> /usr/lpp/SAVESPACE 48
14--> /lpp/SAVESPACE 32
14--> /usr/lpp/bos.hos/farm.apps.hog/inst_root/4.1.0.3/ etc 32
%
%
15--> ranch.hog 4.1.0.0
%
16--> IX51366 Свиньи несут яйца.
16--> IX81360 У поросят слишком много ушей.
]
}

Раздел с информацией о зависимостях

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

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

В приведенном ниже описании различных типов необходимого программного обеспечения требуемый-уровень обозначает минимальный уровень набора файлов, который должен быть установлен в системе. Кроме случаев, когда это явно запрещено (см. раздел Информация о заменяемом программном обеспечении), вместо указанного уровня в системе может быть установлен набор файлов более высокого уровня. Например, если в условии указано, что требуется набор файлов plum.tree 2.2.0.0, то при наличии в системе набора файлов plum.tree 3.1.0.0 это условие будет считаться выполненным.

Необходимое программное обеспечение

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

Синтаксис
*prereqнабор-файлов требуемый-уровень
Альтернативный формат
набор-файловтребуемый-уровень

По умолчанию считается, что для установки обновления в системе должен был установлен базовый уровень этого же набора файлов. Если это условие не должно распространяться на поставляемое вами обновление, вам следует явно задать другое условие. По умолчанию считается, что версия и выпуск базового набора файлов совпадают с версией и уровнем обновления. Если уровень-исправления обновления равен 0, то считается, что модификация и уровень-исправления базового набора файлов равны 0. В противном случае считается, что модификация базового набора файлов совпадает с модификацией обновления, а уровень-исправления базового набора файлов равен 0. Например, по умолчанию для установки обновления уровня 4.1.3.2 требуется, чтобы в системе был установлен набор файлов уровня 4.1.3.0. Для установки обновления уровня 4.1.3.0 требуется, чтобы в системе был установлен набор файлов уровня 4.1.0.0.

Сопутствующее программное обеспечение

Для правильной работы набора файлов в системе должны быть установлены все указанные сопутствующие наборы файлов. По окончании установки команда installp проверяет наличие сопутствующего программного обеспечения, и в случае его отсутствия выдает предупреждающее сообщение. Сопутствующим программным обеспечением для набора файлов могут быть и наборы файлов из того же пакета.

Синтаксис
*coreq набор-файловтребуемый-уровень

Условная зависимость

Указывает, что если в системе установлен набор файлов уровня установленный-уровень, то он должен быть заменен на уровень требуемый-уровень. Такие условия обычно применяются для формирования зависимостей между обновлениями. Ниже приведен пример данного условия:
*ifreq plum.tree (1.1.0.0) 1.1.2.3
Синтаксис
*ifreqнабор-файлов
[(установленный-уровень)]
требуемый-уровень

Если набор файлов plum.tree вообще не установлен в системе, то он не будет установлен. Если установлен любой из следующих уровней набора файлов plum.tree, то он не будет заменен на уровень 1.1.2.3:

1.1.2.3
Этот уровень совпадает с требуемым-уровнем.
1.2.0.0
Данный базовый уровень не соответствует базовому уровню обновления 1.1.2.3.
1.1.3.0
Этот уровень выше, чем требуемый-уровень.

Если установлен любой из следующих уровней набора файлов plum.tree, то он будет заменен на уровень 1.1.2.3:

1.1.0.0
Данный уровень в точностью соответствует значению установленный-уровень.
1.1.2.0
Базовый уровень данного уровня совпадает со значением установленный-уровень, и при этом данный уровень ниже, чем требуемый-уровень.

Параметр (установленный-уровень) не обязателен. Если он не указан, то предполагается, что у значений установленный-уровень и требуемый-уровень совпадают версия и выпуск. Если уровень-исправления в значении требуемый-уровень равен 0, то модификация и уровень-исправления установленного-уровня тоже равны 0. В противном случае модификация в значении установленный-уровень равна модификации в значении требуемый-уровень, а значение уровень-исправления равно 0. Пример: если требуемый-уровень равен 4.1.1.1 и не указан параметр установленный-уровень, то установленный-уровень считается равным 4.1.1.0. Если требуемый-уровень равен 4.1.1.0 и не задан установленный-уровень, то предполагается, что установленный-уровень равен 4.1.0.0.

Дополнительное программное обеспечение

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

Синтаксис
*instreq набор-файловтребуемый-уровень

Групповое условие

Групповое условие считается выполненным, если выполнено более, чем минимум из входящих в него условий. Групповое условие может содержать условия необходимого, сопутствующего и обновляемого программного обеспечения, а также вложенные групповые условия. Значение минимум перед значением {список-условий} указывает, сколько условий из списка-условий должны быть выполнены для того, чтобы групповое условие считалось выполненным. Например, если задано >2, то для выполнения группового условия требуется, чтобы были выполнены хотя бы три условия из RequisiteExpressionList.

Синтаксис
>Число { RequisiteExpressionList }

Примеры информации о зависимостях

  1. Следующий пример иллюстрирует применение сопутствующего программного обеспечения. Предположим, что набор файлов book.create 12.30.0.0 не может применяться без наборов файлов layout.text 1.1.0.0 и index.generate 2.3.0.0, поэтому для набора файлов book.create 12.30.0.0 задано следующее условие:
    *coreq layout.text 1.1.0.0
    *coreq index.generate 2.3.0.0
    Набор файлов index.generate 3.1.0.0 удовлетворяет условию index.generate, поскольку уровень 3.1.0.0 выше требуемого уровня 2.3.0.0.
  2. В следующем примере применяются несколько условий различных типов. Для набора файлов new.fileset.rte 1.1.0.0 заданы следующие условия:
    *prereq database.rte 1.2.0.0
    *coreq spreadsheet.rte 1.3.1.0
    *ifreq wordprocessorA.rte (4.1.0.0) 4.1.1.1
    *ifreq wordprocessorB.rte 4.1.1.1

    На момент установки набора файлов new.fileset.rte в системе должен быть установлен набор файлов database.rte уровня 1.2.0.0 или выше. Если наборы файлов database.rte и new.fileset.rte устанавливаются за один вызов команды installp, то набор файлов database.rte будет установлен раньше набора файлов new.fileset.rte.

    Для работы набора файлов new.fileset.rte необходим набор файлов spreadsheet.rte уровня 1.3.1.0 или выше. Набор файлов spreadsheet.rte не обязательно устанавливать до набора файлов new.fileset.rte при условии, что оба набора файлов будут установлены за один вызов команды installp. Если набор файлов spreadsheet.rte нужного уровня не будет установлен на момент окончания работы команды installp, то будет выдано предупреждение о том, что отсутствует сопутствующее программное обеспечение.

    Если в системе установлен набор файлов wordprocessorA.rte уровня 4.1.0.0 (или он устанавливается вместе с набором файлов new.fileset.rte), то будет установлено обновление wordprocessorA.rte уровня 4.1.1.1 и выше.

    Если в системе установлен набор файлов wordprocessorB.rte уровня 4.1.0.0 (или он устанавливается вместе с набором файлов new.fileset.rte), то будет установлено обновление wordprocessorB.rte уровня 4.1.1.1 и выше.

  3. В следующем примере проиллюстрировано применение условия на дополнительное программное обеспечение. Набор файлов Super.msg.in_IN.Widget уровня 2.1.0.0 дополняет следующий набор файлов:
    *instreq Super.Widget 2.1.0.0

    Набор файлов Super.msg.fr_FR.Widget не будет установлен автоматически, если не установлен набор файлов Super.Widget. Набор файлов Super.msg.fr_FR.Widget можно установить, если набор файловSuper.Widget не установлен, но явно указан в списке устанавливаемых наборов файлов.

  4. Следующий пример иллюстрирует групповые условия. Для установки набора файлов требуется, чтобы был установлен хотя бы один из необходимых наборов файлов (могут быть установлены и оба набора). Если установлен набор файлов spreadsheet_1.rte, то он должен соответствовать уровню 1.2.0.0 или более высокому, либо должен быть установлен набор файлов spreadsheet_2.rte уровня 1.3.0.0 или выше.
    >0 {
    *prereq spreadsheet_1.rte 1.2.0.0
    *prereq spreadsheet_2.rte 1.3.0.0
    }

Размер и сведения о лицензионном соглашении

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

Информация о размере

Программа installp перед установкой набора файлов проверяет, достаточно ли свободной памяти в системе, и если требования из этого раздела не выполнены, набор файлов не устанавливается. Информация о размере приводится в следующем виде:
Каталог объем-постоянной-памяти [объем-временной-памяти]

Помимо этого, можно задать требования к объему пространства подкачки и дополнительной рабочей памяти, которая потребуется во время установки. Для этого в поле пути к файлу нужно указать опции PAGESPACE и INSTWORK.

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

Объем дисковой памяти, требуемый для установки или обновления набора файлов (в блоках по 512 байт). Фактически это суммарный размер новых и обновленных файлов. Кроме того, в следующих случаях это поле играет особое значение:

Если в поле Каталог указано PAGESPACE, то значение объем-постоянной-памяти задает объем пространства подкачки (в блоках по 512 байт), требуемый для установки.

Если в поле Каталог указано значение INSTWORK, то значение объем-постоянной-памяти задает объем памяти (в блоках по 512 байт), необходимый для распаковки управляющих файлов, применяемых во время установки. Эти управляющие файлы должны содержаться в архиве liblpp.a.

объем-временной-памяти

Объем дополнительной памяти, которая потребуется в указанном каталоге на время установки или обновления набора файлов (в блоках по 512 байт). После завершения установки эта память будет освобождена. Значение объем-временной-памяти указывать не обязательно. Временная память может потребоваться, например, в таких случаях, когда при установке требуется скомпоновать выполняемый файл из объектного. Другим примером может служить операция помещения объектного файла в библиотеку. Для помещения файла в библиотеку команда installp создает копию библиотеки, затем помещает файл в копию библиотеки, а после этого заменяет исходную библиотеку на копию. Память, необходимая для копии библиотеки, потребуется только на время архивации файла, и ее следует учесть в объеме временной памяти.

Если в поле Каталог указано INSTWORK, то значение объем-временной-памяти задает размер сжатого файла liblpp.a в блоках по 512 байт.

Ниже приведен пример раздела с информацией о размере:
/usr/bin        30
/lib            40 20
PAGESPACE       10
INSTWORK        10  6

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

Размер обновлений должен быть задан с учетом заменяемых файлов, старые версии которых будут перемещены в каталоги save. Эти файлы сохраняются на случай, если при установке новой версии возникнут ошибки и придется восстанавливать старую версию. Для того чтобы задать требования к объему памяти для сохранения старых файлов, укажите следующие значения:

/usr/lpp/SAVESPACE
Каталог save для файлов компонента usr. По умолчанию все файлы компонента usr сохраняются в каталоге /usr/lpp/пакет/набор-файлов/уровень.save.
/lpp/SAVESPACE
Каталог save для файлов компонента root. По умолчанию все файлы компонента root сохраняются в каталоге /lpp/пакет/набор-файлов/уровень.save.

Сведения о лицензионном соглашении

Новое дополнение к процессу установки AIX позволяет владельцу продукта потребовать от пользователя принять лицензионное соглашение до начала установки продукта. Обычно команда installp считывает файл lpp_name с любого образа. Если в поле размера файла lpp_name есть записи LAF или LAR, то installp вызывает команду inulag, которая показывает в окне текст лицензионного соглашения и фиксирует принятие пользователем этого соглашения. Если пользователь отказывается принять лицензионное соглашение, установка продукта прерывается.

Где должен находится файл лицензии

Владелец продукта может размещать файл лицензии по своему усмотрению. Однако настоятельно рекомендуется поместить его в каталог /usr/swlag/LANG. Рекомендуемое имя файла Лицензионного соглашения имеет вид: ИмяПродукта_ВерсияВыпуск.la . Однако использовать именно такое имя и расположение необязательно. Команда installp и такое размещение просто предлагают способ доставки информации потребителям. Все утилиты и необходимое наполнение должны предоставляться вместе с продуктом.

Требования к переводу файла лицензии

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

Способ поставки файла лицензии

Файл лицензии может поставляться в составе основного продукта или в виде отдельного набора файлов. Во многих продуктах создается отдельный набор файлов, предназначенный только для файлов лицензий. Такой подход позволяет создать для сложного продукта с большим числом компонентов один файл и один набор файлов лицензии и поставлять этот набор файлов на всех носителях, необходимых для установки различных компонентов, а не включать файлы в состав каждого компонента. В настоящее время рекомендуется присваивать такому набору файлов имя lpp.license или lpp.loc.license. Большинство продуктов в настоящее время используют первое имя. Если вы хотите, чтобы набор файлов лицензии был невидим для пользователя при обычной установке, то присвойте ему имя lpp.loc.license, поскольку выбирать для установки набор файлов лицензии не требуется.

Способ упаковки файла лицензии

Сам файл никогда не указывается в списке fileset.al или fileset.inventory для набора файлов. Команда installp находит лицензию по записи в разделе размера в файле ProductName. Применяются следующие типы записей:
LAF

License Agreement File (файл лицензионного соглашения) - указывает команде installp, что этот файл поставляется в составе данного набора файлов.

Файлы лицензионных соглашений обозначаются в записи раздела размера следующим образом:
LAF<язык>размер-файла-лицензии
Термин
Описание
LAF
License Agreement File - файл лицензионного соглашения
<lang>
Язык, на который переведен файл. Обычно это записи вида en_US, ru_RU, fr_FR, Ja_JP и zh_TW. Если <язык> не указан, то считается, что файл лицензионного соглашения не переведен и поставляется в кодировке ASCII. Если файл лицензионного соглашения переведен, то обязательно должен быть указан <язык>. В противном случае невозможно будет связать файл с записью обязательных требований.
файл-лицензии
Полный путь к файлу лицензии в установочном образе и в системе. Рекомендуется применять путь вида /usr/swlag/ru_RU/ИмяПродукта_ВерсияВыпуск.la
размер
Фактический размер файла лицензии в блоках по 512 байт, позволяющий команде installp выделить достаточное количество места для размещения в системе файла лицензии.
LAR

License Agreement Requisite (обязательное лицензионное соглашение) - указывает команде installp, что данный набор файлов требует обязательной установки указанного файла лицензионного соглашения. Это не то же самое, что обязательное программное обеспечение, поскольку лицензионное соглашение находится в файле, а не в наборе файлов. Файлы и наборы файлов имеют различный формат и предназначены для различных целей. Их всегда следует четко различать.

Термин
Описание
LAR
License Agreement Requisite - обязательное лицензионное соглашение
req_license_file
Полный путь к файлу лицензии, необходимому для установки данного набора файлов. Обычно в этой записи вместо фактического названия языка указывается значение %L, позволяющее просматривать только файл на требуемом языке, а не все файлы на всех языках.
Обычно файлы поставляются в наборе файлов, содержащем все записи LAF. Другие наборы файлов продукта, требующие наличия этой лицензии, содержат только запись LAR. Набор файлов, поставляемый с записями LAF, содержит также перечисленные файлы в полностью заданном каталоге в образе BFF, но эти файлы не перечислены в файлах fileset.al и fileset.inventory набора файлов. Архитектура электронных лицензий не требует регистрации файлов в реестре программного обеспечения SWVPD. Команда installp выполняет следующие действия:
  1. Находит обязательный файл.
  2. Проверяет систему и убеждается в том, что условия соглашения приняты.
  3. Если условия соглашения не приняты
    1. Находит набор файлов, в котором размещается файл
    2. Извлекает из образа BFF только один файл лицензионного соглашения
    3. Показывает содержимое файла пользователю.

Пример набора файлов LAF

Ниже приведен пример набора файлов с файлами лицензий:
iced.tea.loc.license 03.01.0000.0000 1 N U en_US IcedTea Лицензионная информация о рецепте чая
[
%
INSTWORK 16 160
LAF/usr/swlag/de_DE/iced.tea.la 24
LAF/usr/swlag/DE_DE/iced.tea.la 24
LAF/usr/swlag/en_US/iced.tea.la 24
LAF/usr/swlag/EN_US/iced.tea.la 24
LAF/usr/swlag/es_ES/iced.tea.la 24
LAF/usr/swlag/ES_ES/iced.tea.la 24
LAF/usr/swlag/fr_FR/iced.tea.la 24
LAF/usr/swlag/FR_FR/iced.tea.la 24
LAF/usr/swlag/it_IT/iced.tea.la 24
LAF/usr/swlag/IT_IT/iced.tea.la 24
LAF/usr/swlag/ja_JP/iced.tea.la 24
LAF/usr/swlag/JA_JP/iced.tea.la 32
LAF/usr/swlag/Ja_JP/iced.tea.la 24
LAF/usr/swlag/ko_KR/iced.tea.la 24
LAF/usr/swlag/KO_KR/iced.tea.la 24
LAF/usr/swlag/pt_BR/iced.tea.la 24
LAF/usr/swlag/PT_BR/iced.tea.la 24
LAF/usr/swlag/ru_RU/iced.tea.la 24
LAF/usr/swlag/RU_RU/iced.tea.la 48
LAF/usr/swlag/zh_CN/iced.tea.la 16
LAF/usr/swlag/zh_TW/iced.tea.la 16
LAF/usr/swlag/Zh_TW/iced.tea.la 16
LAF/usr/swlag/ZH_TW/iced.tea.la 24
%
%
%
]

Пример набора файлов LAR

Ниже приведен пример набора файлов с обязательными файлами лицензий:
iced.tea.server 03.01.0000.0010 1 N B en_US Набор рецептов чая
[
*prereq bos.net.tcp.client 5.1.0.10
*coreq iced.tea.tools 5.1.0.10
*coreq Java14.sdk 1.4.0.1
%
/usr/bin 624
/usr/lib/objrepos 24
/usr/include 16
/usr/include/sys 56
/usr/lpp/iced.tea 22
/usr/samples/iced.tea 8
/usr/samples/iced.tea/server 504
/usr/lpp/iced.tea/inst_root/etc/tea 8
/usr/iced.tea 8
/usr/lpp/iced.tea/inst_root/etc/tea/Top 8
INSTWORK 208 96
/lpp/iced.tea 104
/etc/tea 8
/etc/objrepos 8
/etc/tea/Top 8
/tmp 0 6
LAR/usr/swlag/%L/iced.tea.la 0
%
%
%
]

Информация о заменяемом программном обеспечении

В этом разделе указываются сведения о том, какие уровни набора файлов могут (или не могут) быть заменены набором файлов с данным уровнем. Это необязательная информация, которая может указываться только в базовых пакетах установки наборов файлов в формате AIX 4.1 и в пакетах обновления наборов файлов в формате AIX 3.2.

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

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

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

Предположим, что обновление farm.apps.hog 4.1.0.1 заменяет файл /usr/sbin/sellhog. В то же время, обновление farm.apps.hog 4.1.0.3 заменяет файлы /usr/sbin/sellhog и /etc/hog. В свою очередь обновление farm.apps.hog 4.1.1.2 заменяет файл /usr/bin/raisehog.

Обновление farm.apps.hog 4.1.0.3 заменяет обновление farm.apps.hog 4.1.0.1, так как оно заменяет те же файлы и относится к той же модификации базового набора файлов (farm.apps.hog 4.1.0.0).

Обновление farm.apps.hog 4.1.1.2 не заменяет ни обновление farm.apps.hog 4.1.0.3, ни обновление farm.apps.hog 4.1.0.1, так как оно содержит не все файлы, заменяемые этими обновлениями, и относится к другой модификации базового набора файлов (farm.apps.hog 4.1.1.0). Обновление farm.apps.hog 4.1.1.0 заменяет обновления farm.apps.hog 4.1.0.1 и farm.apps.hog 4.1.0.3.

Информация о заменяемом программном обеспечении для базового уровня набора файлов

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

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

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

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

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

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

В качестве примера предположим, что набор файлов Year.Full 19.91.0.0 был разделен на несколько отдельных наборов файлов и больше не поставляется. Только для одного из этих наборов файлов, например, для Winter 19.94.0.0, должен быть указан оператор совместимости с Year.Full 19.94.0.0. Этот оператор позволяет установить набор файлов Winter 19.94.0.0 вместо набора файлов Year.Full уровня 19.94.0.0 и ниже в тех случаях, когда набор файлов Year.Full требуется для работы каких-либо других наборов файлов.

Обработка информации о заменяемом программном обеспечении

В команде installp предусмотрены следующие возможности для установки наборов файлов и обновлений, заменяющих другие наборы файлов и обновления:

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

    Предположим, что пользователь вызвал команду installp с флагом -g (автоматическая установка необходимого программного обеспечения) для набора файлов farm.apps.hog 4.1.0.2. Если на установочном носителе записан только набор файлов farm.apps.hog 4.1.0.4, команда installp установит farm.apps.hog 4.1.0.4 как заменяющий набор файлов.

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

    Если в команде installp указан флаг -g, то все необходимые обновления (как явно указанные в командной строке, так и добавленные в список установки после проверки требований) будут заменены на заменяющие обновления максимально высокого уровня, найденные на установочном носителе. В связи с этим, если пользователю требуется установить конкретный уровень обновления (не обязательно самый высокий), в команде installp не следует указывать флаг -g.

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

    Если в последнем случае пользователь хочет последовательно установить с носителя два обновления различных уровней, ему потребуется вызвать команду installp для каждого из этих уровней. Обратите внимание на то, что эта операция потеряет всякий смысл, если в командной строке вместе с флагом установки будет указан флаг фиксации (-ac). При фиксации второго обновления первое будет удалено из системы.

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

Информацию об исправлениях указывать не обязательно. В этом разделе содержится код исправления и описание исправленной ошибки длиной до 60 символов. Код исправления представляет собой уникальный идентификатор данного исправления длиной до 16 символов. Коды исправлений, начинающиеся с символов ix, iy, IY и IX зарезервированы для разработчиков операционной системы.

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

Библиотечный файл управления установкой - liblpp.a

Файл liblpp.a - это архивный файл, содержащий файлы для управления установкой пакета. В системах более поздних версий, чем AIX 4.3, файл liblpp.a можно создать с помощью команды ar с флагом -g, чтобы гарантировать создание 32-разрядного архива. В этом разделе описано большинство стандартных файлов, входящих в архив liblpp.a.

В именах управляющих файлов, упоминаемых в этом разделе, присутствует компонент набор-файлов. Набор-файлов задает имя отдельного набора файлов, устанавливаемого в составе пакета программного обеспечения. Например, файл со списком установки обозначается как набор-файлов.al. Это означает, что список установки для компонента bos.net.tcp.client продукта bos.net хранится в файле bos.net.tcp.client.al.

Имена всех файлов, входящих в архив liblpp.a и не описанных в этой главе, должны удовлетворять следующим условиям:
  • Если файл используется при установке конкретного набора файлов, его имя должно начинаться с префикса набор-файлов .
  • Если файл нужен для установки нескольких наборов файлов, входящих в один пакет, его имя должно начинаться с префикса lpp. .

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

Файлы данных, содержащиеся в файле liblpp.a

набор-файлов.al
Список установки. В этом файле хранится список файлов, которые должны быть восстановлены для установки данного набора файлов. Каждый файл должен быть задан на отдельной строке с указанием абсолютного пути, например: ./usr/bin/pickle. Список установки требуется для всех пакетов и наборов файлов, содержащих по крайней мере один файл.
набор-файлов.cfginfo
Файл с особыми инструкциями. В этом файле содержится список ключевых слов, по одному в строке. Каждое ключевое слово задает особые параметры набора файлов или обновления. В настоящее время поддерживается только одно ключевое слово - BOOT - указывающее, что после завершения установки должно быть выдано сообщение о необходимости перезагрузки системы.
набор-файлов.cfgfiles
Список файлов, настроенных пользователем, а также инструкций, которые должны применяться при установке нового или имеющегося уровня набора файлов. Перед тем как восстановить файлы, перечисленные в файле набор-файлов.al, система сохраняет файлы, перечисленные в файле набор-файлов.cfgfiles. Затем сохраненные файлы обрабатываются в соответствии с инструкциями, указанными в файле набор-файлов.cfgfiles.
Набор-файлов.copyright
Информация об авторских правах, связанная с набором файлов. Этот файл состоит из полного названия программного продукта и сведений об авторских правах.
набор-файлов.err
Файл c шаблонами ошибок, передаваемый команде errupdate для добавления и удаления записей, хранящихся в архиве шаблонов ошибок. Этот файл обычно используется драйверами устройств. Для обеспечения возможности очистки команда errupdate создает файл набор-файлов.undo.err. Формат файла набор-файлов.err приведен в описании команды errupdate. Этот файл может входить только в корневую часть набора файлов.
Набор-файлов.fixdata
Файл формата настройки. В этом файле содержится информация о том, какие ошибки исправлены в данном наборе файлов или обновлении.
набор-файлов.inventory
Файл реестра. Этот файл содержит информацию о файлах набора или обновления, которая заносится в реестр программного обеспечения. Это стандартный файл настройки, в котором указаны инструкции по обработке всех устанавливаемых и обновляемых файлов.
набор-файлов.namelist
Список устаревших наборов файлов, в состав которых входили файлы, теперь включенные в состав устанавливаемого набора файлов. Этот файл применяется только при изменении логической структуры программных продуктов.
Набор-файлов.odmadd или Набор-файлов.*.odmadd
Разделы, добавляемые в базы данных ODM.
набор-файлов.rm_inv
Файл с информацией, удаляемой из реестра. Этот файл применяется только при изменении логической структуры программных продуктов. Он обязательно должен поставляться в тех случаях, когда устанавливаемый набор файлов не является непосредственной заменой устаревшего набора файлов. Это стандартный файл настройки, в котором указаны имена файлов, относящихся к устаревшим наборам файлов и потому удаляемых из системы.
набор-файлов.size
Этот файл содержит информацию о дисковом пространстве, необходимом для файлов данного набора в описанном выше формате.
набор-файлов.trc
Файл с шаблоном отчета о трассировке. Команда trcupdate применяет этот файл для добавления, замены и удаления содержимого трассировочных отчетов в файле /etc/trcfmt. Для обеспечения возможности очистки команда trcupdate создает файл набор-файлов.undo.trc. Файлы набор-файлов.trc могут поставляться только для компонента root.
lpp.acf
Файл управления архивом, единый для всего пакета. Этот файл необходим только для добавления и удаления элементов архивных файлов, уже существующих в системе. В каждой строке файла управления архивом должны быть указаны имя элемента архива во временном каталоге (причем это имя должно быть указано в файле набор-файлов.al) и имя архивного файла, к которому относится этот элемент. Оба имени должны быть указаны с абсолютным путем:
./usr/ccs/lib/libc/member.o ./usr/ccs/lib/libc.a
lpp.README
Файл readme. Содержит информацию, с которой пользователь должен ознакомиться до начала работы с программным обеспечением. Этот файл не обязателен и может также называться README, lpp.doc, lpp.instr или lpp.lps.
productid
Идентификационный файл продукта. Этот файл должен состоять из одной строки, в которой указаны имя продукта, идентификатор продукта (длиной не более 20 символов) и необязательный код продукта (длиной не более 10 символов).

Необязательные исполняемые файлы, содержащиеся в файле liblpp.a

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

Набор-файлов.config или Набор-файлов.config_u
Изменяет конфигурацию при завершении стандартной процедуры установки или обновления продукта. Файл набор-файлов.config вызывается только при установке продукта.
Набор-файлов.odmdel или Набор-файлов.*.odmdel
Обновляет информацию в базе данных ODM перед тем, как в нее будут добавлены новые записи для устанавливаемого или обновляемого набора файлов. Для одного набора файлов могут применяться несколько файлов odmdel.
набор-файлов.pre_d
Указывает, можно ли удалить данный набор файлов. Если набор файлов можно удалить, данная программа должна выдавать код возврата 0 (ноль). По умолчанию предполагается, что можно удалить любой набор файлов. Если файл удалить нельзя, программа должна выдать сообщение об ошибке с описанием причины, по которой нельзя удалить файл.
Набор-файлов.pre_i или Набор-файлов.pre_u
Вызываются перед восстановлением или сохранением файлов из списка установки, но после удаления предыдущей версии данного набора файлов.
набор-файлов.pre_rej
Вызываются перед операцией аннулирования или предварительного просмотра перед аннулированием набора файлов. С помощью этого сценария следует определять возможность аннулирования набора файлов. Этот сценарий не должен выполнять никаких операций, которые могут изменить что-либо в системе. Если сценарий завершится с ненулевым кодом выхода, операция аннулирования не выполняется.
набор-файлов.pre_rm
Вызывается во время установки перед удалением файлов предыдущей версии набора файлов.
Набор-файлов.post_i или Набор-файлов.post_u
Вызываются после восстановления файлов из списка установки набора файлов или обновления.
набор-файлов.unconfigнабор-файлов.unconfig_u
Аннулируют результаты настройки, выполненной в ходе установки или обновления продукта при его удалении или отмене установки. Файл набор-файлов.unconfig вызывается только во время удаления.
набор-файлов.unodmadd
Удаляет из баз данных ODM записи, добавленные в ходе установки или обновления продукта.
Набор-файлов.unpost_i или Набор-файлов.unpost_u
Аннулирует результаты обработки, выполненной после восстановления файлов из установочного списка в ходе установки или обновления продукта, при его удалении или отмене установки.
Набор-файлов.unpre_i или Набор-файлов.unpre_u
Аннулирует результаты обработки, выполненной до восстановления файлов из установочного списка в ходе установки или обновления продукта, при его удалении или отмене установки.

Если какой-либо из этих программ требуется выполнить команду, которая может изменить конфигурацию устройств системы, перед выполнением этой команды данная программа должна проверить значение переменной среды INUCLIENTS. Если переменная INUCLIENTS определена, конфигурацию устройств системы изменять нельзя. В среде сетевой установки (NIM) программа installp используется в различных целях, и в некоторых случаях команда installp не должна выполнять часть обычно выполняемых операций. Переменная INUCLIENTS определяется в среде NIM в тех случаях, когда некоторые операции выполнять не следует.

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

instal
Применяется вместо стандартного сценария установки /usr/lib/instl/instal. Команда installp вызывает этот файл при установке базового набора файлов из пакета.
lpp.cleanup
Применяется вместо стандартного сценария очистки /usr/lib/instl/cleanup. Команда installp вызывает этот файл при установке базового набора файлов или обновления, которое было частично установлено и должно быть удалено для перевода набора файлов в согласованное состояние.
lpp.deinstal
Применяется вместо стандартного сценария удаления набора файлов /usr/lib/instl/deinstal. Этот выполняемый файл должен находиться в каталоге /usr/lpp/имя-пакета. Программа installp вызывает этот файл при удалении базового набора файлов.
lpp.reject
Применяется вместо стандартного сценария аннулирования /usr/lib/instl/reject. Команда installp вызывает этот файл при аннулировании обновления набора файлов. (Стандартный сценарий /usr/lib/instl/reject представляет собой ссылку на сценарий /usr/lib/instl/cleanup.)
update
Применяется вместо стандартного сценария обновления /usr/lib/instl/update. Команда installp вызывает этот файл при установке обновления набора файлов. (Стандартный сценарий /usr/lib/instl/update представляет собой ссылку на сценарий /usr/lib/instl/instal.)
Для обеспечения совместимости с командой installp ваши программы instal и update должны удовлетворять следующим требованиям:
  • Обрабатывать все наборы файлов пакета. Программа может либо обрабатывать все наборы самостоятельно, либо вызывать отдельный исполняемый файл для каждого набора файлов.
  • Сохранять старые версии заменяемых файлов с помощью команды inusave.
  • Восстанавливать все файлы компонента usr с установочного носителя с помощью команды inurest.
  • Копировать все необходимые файлы компонента root из каталога /usr/lpp/пакет/inst_root с помощью команды inucp.
  • Создавать файл $INUTEMPDIR/status с информацией о результатах обработки всех устанавливаемых и обновляемых наборов файлов.
  • Выдавать код возврата, соответствующий результатам установки. Если программа instal или update возвращает ненулевой код возврата, и при этом не существует файла status, то предполагается, что ни один набор файлов не обработан.

Необязательный исполняемый файл, содержащийся в файле набор-файлов.al

набор-файлов.unconfig_d
Аннулирует результаты особой процедуры настройки, выполняемой при установке и обновлении данного набора файлов. Файл набор-файлов.unconfig_d выполняется в том случае, если команда installp вызвана с флагом -u. Если этого файла нет и в командной строке указан флаг -u, то вызываются программы набор-файлов.unconfig, набор-файлов.unpost_i и набор-файлов.unpre_i.

Подробное описание файлов управления установкойeФайл набор-файлов.cfgfiles

В файле набор-файлов.cfgfiles перечислены файлы конфигурации, которые должны быть сохранены для перехода к новой версии набора файлов без потери пользовательских данных. Файл набор-файлов.cfgfiles должен находиться в файле liblpp.a, относящемся к тому же компоненту (usr или root), что и файлы с пользовательскими данными.

Файл набор-файлов.cfgfiles содержит список всех файлов, которые требуется сохранить. В каждой строке данного файла должен быть указан абсолютный путь к сохраняемому файлу, пробел и ключевое слово, указывающее способ обработки этого файла. Предусмотрены следующие ключевые слова:

preserve
После установки нового уровня набора файлов новая версия файла заменяется на старую, которая была предварительно сохранена в специальном каталоге. После этого сохраненная версия удаляется из каталога, в котором она была сохранена на время установки нового уровня набора файлов.
auto_merge
Предполагается, что при выполнении программы набор-файлов.post_i специальные программы, предоставленные разработчиком, добавляют нужную информацию из новой версии файла в старую версию, хранящуюся в каталоге сохранения. После завершения работы программы набор-файлов.post_i команда installp заменяет новую версию файла на старую версию из каталога сохранения, после чего удаляет из этого каталога старую версию.
hold_new
После установки нового уровня набора файлов новая версия файла заменяется на старую, которая была предварительно сохранена в специальном каталоге. Новая версия помещается в каталог сохранения вместо старой версии. Если пользователю потребуется новая версия файла, он сможет взять ее из этого каталога.
user_merge
Новая версия файла остается в системе, а старая сохраняется в специальном каталоге. Если пользователю по каким-либо причинам понадобится старая версия файла, он всегда сможет взять ее из этого каталога. Применять это ключевое слово не рекомендуется.
other
Это ключевое слово указывается в тех случаях, когда ни один из перечисленных выше вариантов не подходит. Команда installp ограничивается тем, что помещает старый файл в каталог сохранения. Предполагается, что вся дальнейшая обработка выполняется программами, поставляемыми разработчиком продукта. Ответственность за документирование операций, выполненных над файлом, возлагается на разработчика.

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

Файлы конфигурации, перечисленные в файле набор-файлов.cfgfiles, сохраняются в том же каталоге сохранения конфигурации, что и сам файл набор-файлов.cfgfiles. Имя каталога сохранения хранится в переменной среды MIGSAVE. Для разных компонентов (usr, share и root) применяются различные каталоги сохранения. Они перечислены ниже:

/usr/lpp/save.config
Компонент usr
/lpp/save.config
Компонент root

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

Предположим, что в набор файлов change.rte входит один файл конфигурации. Этот файл относится к компоненту root, и поэтому он указан в файле change.rte.cfgfiles для компонента root:

/etc/change_user   user_merge

При переходе от старого набора файлов (change.obj) к набору файлов change.rte этот файл сохранить не удастся, потому что его формат был изменен. В то же время, этот файл может сохраняться при установке новых уровней change.rte. Для этого нужно написать сценарий change.rte.post_i, алгоритм работы которого зависит от того, какой набор файлов был установлен в системе ранее. В этом случае изменения, внесенные пользователем в файл /etc/change_user, не будут потеряны при обновлении.

Сценарий change.bar.post_i может выглядеть следующим образом:
#! /bin/ksh
rc=0
grep -q change.rte $INSTALLED_LIST
if [$? = 0]
то
mv $MIGSAVE/etc/change_user/ /etc/change_user
rc=1
fi
exit $rc

Команда installp определяет и экспортирует переменную среды $INSTALLED_LIST. Описание файла конфигурации набор-файлов.installed_list приведен в разделе Файлы управления установкой для продуктов с измененной структурой. В переменной $MIGSAVE хранится имя каталога, в котором сохраняются файлы конфигурации компонента root.

Если команде installp не удается найти какой-либо из файлов, указанных в файле набор-файлов.cfgfiles, то она не выдает никаких сообщений. Кроме того, команда installp не выдает сообщений о файлах, не найденных во время выполнения сценария набор-файлов.post_i (этот сценарий восстанавливает сохраненные файлы конфигурации после установки новой версии набора файлов). Если вы хотите, чтобы пользователь получал какие-либо сообщения в таких ситуациях, эти сообщения должны выдаваться вашими сценариями.

Рассмотрим пример применения файла набор-файлов. cfgfiles. Допустим, в наборе файлов Product_X.option1 предусмотрено три файла конфигурации, относящихся к компоненту root. Файл Product_X.option1.cfgfiles включен в ту часть файла liblpp.a, которая относится к компоненту root. Содержимое этого файла приведено ниже:
./etc/cfg_leafpreserve
./etc/cfg_pudding hold_new
./etc/cfg_newtonpreserve

Файл набор-файлов.fixdata

набор-файлов.fixdata
Стандартный файл настройки, в котором хранится информация о том, какие ошибки исправлены в данном обновлении или в новом базовом уровне набора файлов

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

Для каждого исправления должен быть отведен отдельный раздел файла набор-файлов.fixdata. Разделы файла набор-файловfixdata задаются в следующем формате:

fix:
name = ключевое-слово
abstract = описание
type = {f | p}
filesets = имя-набора-файлов уровень-набора-файлов
[имя-набора-файлов уровень-набора-файлов ...]
[symptom = [симптом]]
  • Длина значения ключевое-слово не должна превышать 16 символов.
  • В поле abstract указывается краткое описание исправления длиной не более 60 символов.
  • В поле type должно быть указано значение f (исправление) или p (обновление уровня обслуживания).
  • В поле filesets должен содержаться список имен и уровней наборов файлов, разделенных символами новой строки.
  • Значение уровень-набора-файлов указывает начальный уровень набора файлов, в котором полностью или частично исправлена ошибка.
  • В необязательном поле symptom можно указать описание ошибки, устраненной данным исправлением. Длина поля symptom не ограничена.

Ниже приведен пример раздела файла набор-файлов.fixdata для ошибки MS21235. Эта ошибка исправлена в двух наборах файлов.

fix:
name = MS21235
abstract = 82-гигабайтовый дисковод не работает на Марсе
type = f
filesets = devices.mca.8d77.rte 12.3.6.13
devices.mca.8efc.rte 12.1.0.2
symptom = 82-гигабайтовые субатомные дискеты не работают в марсианской атмосфере.

Файл набор-файлов.inventory

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

Для каждого компонента, в котором есть новые или измененные файлы, должен поставляться отдельный файл набор-файлов.inventory. Если в установочном пакете есть компонент root, но в этом компоненте нет ни одного нового и измененного файла, то файл набор-файла.inventory для компонента root не требуется.

Примечание: В файле набор-файлов.inventory можно указывать информацию только о тех файлах, размер которых не превышает 2 ГБ. Если в вашем установочном пакете есть файлы размером более 2 ГБ, укажите их файле набор-файлов.al, но не задавайте их в файле набор-файлов.inventory. Команда sysck в настоящее время не поддерживает файлы размером более 2 ГБ; кроме того, во многих системах файловая система /usr по умолчанию не поддерживает файлы размером более 2 ГБ.

Файл inventory - это текстовый файл в стандартном формате файла настройки. Имена разделов этого файла представляют собой полные пути к устанавливаемым файлам. Имя раздела должно заканчиваться двоеточием (:), за которым следует символ новой строки. После имени раздела могут быть указаны атрибуты в формате атрибут=значение. Каждый атрибут должен быть указан в отдельной строке.

Разделы файла набор-файлов.inventory задаются в следующем формате:
inventory:
type     = type
class    = inventory,apply,C2_exclude,fileset
owner    = имя_владельца
group    = group_name
mode     = TCB | SUID | SGID,permissions
target   = полный_путь_имяфайла
link     = полный-путь-жесткой-связи [additional_hardlinks]
size     =<blank> | VOLATILE |size
checksum =<blank> | VOLATILE |"checksum"
Табл. 4. Допустимые атрибуты
Атрибут Описание
file_name Полный путь к файлу или связи относительно корневого каталога (./), после которого следует двоеточие (:) и символ новой строки. Максимальная длина полного пути равна 255 символам.
type Тип записи file_name. Допускаются следующие типы:
Ключевые слова
Описание
FILE
Обычный файл
DIRECTORY
Каталог
SYMLINK
Полный путь к символьной связи
class Указывает, как следует обращаться к имени file_name во время установки. В этом поле должно быть указано по крайней мере два следующих ключевых слова:
Тип
Описание
inventory
Указывает, что файл должен остаться после завершения установки. Файл добавляется в базу данных реестра программного обеспечения SWVPD. Эту возможность не следует применять вместе с указанием типа файла A в fileset.il.
apply
Указывает, что файл необходимо восстановить с установочного носителя. Поле file_name указывается в списке применения (fileset.al). Эту возможность не следует применять вместе с указанием типа файла I в fileset.il.
C2_exclude
Указывает, что этот файл не нужно обрабатывать в системах с уровнем защиты C2. Если указан данный флаг, то файл должен быть также указан в списке fileset.tcb.
owner Задает владельца, которому файл будет принадлежать после установки. Не указывайте в этом поле uid. В качестве значения атрибута должно быть указано имя длиной не более 8 символов.
group Указывает группу файла. Не указывайте в этом поле gid. В качестве значения атрибута должно быть указано имя группы длиной не более 8 символов.
mode Указывает режим доступа к файлу. Режим доступа должен быть задан в восьмеричном формате. Перед числом, определяющим режим доступа, могут быть указаны произвольные модификаторы из следующего списка. Если указано несколько модификаторов, они должны быть разделены запятыми.
Модификаторы
Описание
TCB
Сокращение от "Trusted Computing Base -а защищенная компьютерная база". Если файл имеет SUID root или SGID system, то он должен быть помечен как TCB.
SUID
Для файла установлен бит ИД пользователя. Для записи DIRECTORY это не играет никакой роли.
SGID
Для файла установлен бит ИД группы. В случае записи DIRECTORY все файлы, создаваемые в данном каталоге, будут иметь ту же группу, что и каталог.
permissions
Шестнадцатеричное трехзначное число, например, 644.
Прим.: Для типа SYMLINK должен быть указан режим 777. Другие записи недопустимы.
связь Список жестких связей с файлом. Если существует несколько жестких связей, то они должны быть перечислены через запятую. Жесткие связи должны находиться в том же каталоге, что и исходный файл. Для записей типа SYMLINK, ключевое слово link недопустимо. Максимальная длина полного пути - 255 символов.
target Допустим только для type=SYMLINK. Это полный путь к целевому файлу связи. Если ссылка создана из каталога /usr/bin в /bin, то в качестве имени файла будет указано /bin, а в качестве целевого имени - /usr/bin. Максимальная длина полного пути - 255 символов.
раздел
Модификаторы
Описание
blank
Если это поле пустое, то размер файла определяется во время установки. Недостаток данного способа заключается в том, что в случае повреждения файла во время установки пользователь не получит соответствующего предупреждения.
VOLATILE
Если предполагается, что размер файла может изменяться, этому атрибуту должно быть присвоено значение VOLATILE.
раздел
Точный размер файла.
Прим.: Не указывайте поле size для записей DIRECTORY и SYMLINK.
checksum
Модификаторы
Описание
blank
Если это поле пустое, то при установке файла в базу данных реестра программного обеспечения SWVPD заносится значение, возвращаемое командой sum -r.
VOLATILE
Указывает размер файла в блоках. Если предполагается, что размер файла может изменяться, этому атрибуту должно быть присвоено значение VOLATILE.
checksum
Точная контрольная сумма, возвращаемая командой sum -r. Значение должно быть заключено в двойные кавычки.
Прим.: Не указывайте поле checksum для записей DIRECTORY и SYMLINK.

набор-файлов

Указывает набор файлов, к котором относится файл.
Прим.: Если указанные символьные и жесткие связи не существуют, то команда sysck создаст их во время установки. Символьные связи компонента root должны быть указаны в файле набор-файлов.inventory, относящемся к компоненту root.

Пример fileset.inventory

Следующий пример набора файлов fileset.inventory демонстрирует применение обозначения типа type.

/usr/bin:
        owner = bin
        group = bin
        mode = 755
        type = directory
        class = apply,inventory,bos.rte


/usr/bin/tcbck:
        owner = root
        group = security
        mode = TCB,SUID,550
        type = file
        class = apply,inventory,bos.rte.security
        size = 99770
        checksum = "17077     98 "


/usr/sbin/tsm:
        owner = root
        group = security
        mode = TCB,SUID,555
        links = /usr/sbin/getty,/usr/sbin/login
        class = apply,inventory,bos.rte,security
        size = 55086
        checksum = "57960     54 "

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

набор-файлов.installed_list
Этот файл создается командой installp во время установки набора файлов, если данный набор файлов уже установлен в системе полностью или частично.

Для того чтобы узнать, установлен ли набор файлов набор-файлов или какие-либо из наборов файлов, перечисленных в файле набор-файлов.namelist (если он есть), команда installp просматривает базу данных программного обеспечения. Если какие-либо компоненты уже установлены, то в файл набор-файлов.installed_list заносятся имена и уровни установленных наборов файлов.

Если файла набор-файлов.installed_list нет, он создается перед вызовом программ rminstal и instal. Файл набор-файлов.installed_list может находиться в рабочем каталоге пакета, в каталоге рабочий-каталог-пакета или в одном из следующих каталогов:
/usr/lpp/
имя-пакета - для компонента usr
/lpp/
имя-пакета - для компонента root

В файле набор-файлов.installed_list перечислены все установленные наборы файлов. Каждая запись содержит имя и обозначение уровня набора файлов.

Например, предположим, что при установке набора файлов storm.rain1.2.0.0 команда installp обнаружила, что в системе уже установлен набор файлов storm.rain1.1.0.0. В этом случае команда installp создает файл рабочий-каталог-пакета/storm.rain.installed_list со следующей информацией:
storm.rain 1.1.0.0
Другой пример: допустим, в набор файлов Baytown.com входит файл Baytown.com.namelist следующего содержания:
Pelly.com
GooseCreek.rte
CedarBayou.stream 
При установке набора файлов Baytown.com2.3.0.0 команда installp обнаружила, что в системе уже установлен набор файлов Pelly.com 1.2.3.0 и CedarBayou.stream4.1.3.2. В этом случае команда installp создаст файл рабочий-каталог-пакета/Baytown.com.installed_list со следующей информацией:
Pelly.obj 1.2.3.0
CedarBayou.stream 4.1.3.2
Табл. 5. Файл Fileset.namelist
Атрибут Описание
набор-файлов.namelist Этот файл необходим при изменении имени набора файлов, а также в том случае, если набор файлов содержит файлы, ранее входившие в другие наборы файлов. В этом файле перечислены все наборы файлов, в которых ранее содержались файлы из данного набора. Имя каждого набора файлов должно быть указано в отдельной строке.

Файл набор-файлов.namelist должен находиться в файле liblpp.a, относящемся к компоненту usr или root. Файл набор-файлов.namelist может поставляться только с установочными пакетами базового уровня; его нельзя поставлять с обновлениями.

В начале установки команда installp просматривает реестр программного обеспечения (SWVPD) и пытается определить, установлены ли в системе какие-либо из наборов файлов, перечисленных в файле набор-файлов.namelist. При обнаружении хотя бы одного набора файлов команда installp создает файл набор-файлов.installed_list и записывает в него имена и уровни найденных наборов файлов.

Рассмотрим пример применения файла набор-файлов.namelist. Пусть набор файлов small.business заменяет поставлявшийся ранее набор файлов family.business. В установочном пакете small.business содержится файл small.business.namelist, хранящийся в файле liblpp.a в разделе компонента usr. В данном случае в файле small.business.namelist должна быть указана следующая информация:
family.business
В качестве более сложного примера применения файла набор-файлов.namelist рассмотрим набор файлов, состоящий из двух частей: клиента и сервера. Наборы файлов LawPractice.client и LawPractice.server заменяют предыдущий набор файлов lawoffice.mgr. Помимо этого, в набор файлов LawPractice.server входит несколько файлов из устаревшего набора файлов BusinessOffice.mgr. В файле LawPractice.client.namelist, который находится в файле liblpp.a установочного пакета LawPractice, должна содержаться следующая информация:
lawoffice.mgr
В файле LawPractice.server.namelist из файла liblpp.a пакета LawPractice должна содержаться следующая информация:
lawoffice.mgr
BusinessOffice.mgr

Если файл набор-файлов.namelist содержит только одну запись, а новый набор файлов не полностью заменяет набор файлов, указанный в файле набор-файлов.namelist, то в файл liblpp.a должен быть включен набор файлов набор-файлов.rm_inv. По содержимому файлов набор-файлов.namelist и набор-файлов.rm_inv программа установки определяет, какие наборы файлов полностью заменяются устанавливаемым набором файлов. Если файл набор-файлов.namelist состоит из одной строки, а файл набор-файлов.rm_inv отсутствует, то предполагается, что новый набор файлов полностью заменяет указанный старый набор файлов. В этом случае старый набор файлов полностью удаляется из системы при установке нового (заменяющего) набора файлов, даже если в старом наборе файлов были файлы, которых нет в новом наборе файлов.

В предыдущих примерах набор файлов small.business полностью заменяет набор файлов family.business, поэтому для него не требуется создавать файл small.business.rm_inv. Однако набор файлов LawPractice.client не полностью заменяет набор файлов lawoffice.mgr, поэтому для него обязательно должен быть создан файл LawPractice.client.rm_inv, даже если он будет пустым.

Пример 3:

Наборы файлов bagel.shop.rte и bread.shop.rte на протяжении долгого времени поставлялись отдельно друг от друга. Теперь решено поставлять bagel.shop.rte в составе bread.shop.rte. Для этого необходимо включить в файл bread.shop.rte.namelist следующую информацию:
bread.shop.rte
bagel.shop.rte

Кроме того, в набор необходимо добавить пустой файл bread.shop.rte.rm_inv, указывающий, что все файлы из набора bagel.shop.rte следует удалить из системы.

Табл. 6. Файл Fileset.rm_inv
Атрибут Описание
набор-файлов.rm_inv В этом файле содержится список файлов, связей и каталогов, которые должны быть удалены из системы, если они установлены.

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

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

Файл набор-файлов.rm_inv - это текстовый файл в стандартном формате файла настройки. Имена разделов этого файла представляют собой полные пути к файлам или каталогам, которые должны быть удалены из системы (в случае, если они установлены). Имя раздела должно заканчиваться двоеточием (:), за которым следует символ новой строки. После имени раздела могут быть указаны атрибуты в формате атрибут=значение. Атрибуты применяются для определения жестких и символьных связей, которые также требуется удалить. Каждый атрибут должен быть указан в отдельной строке. Допустимы следующие атрибуты:

Табл. 7. Атрибуты и описания
Атрибут Описание
links Список жестких связей с файлом. Связи должны быть перечислены через запятую с указанием абсолютного пути.
symlinks Список символьных связей с файлом. Связи должны быть перечислены через запятую с указанием абсолютного пути.
Прим.: Связи должны быть указаны дважды - один раз в отдельном разделе, а один раз - в качестве атрибута файла, которому соответствует связь.

В качестве примера предположим, что набор файлов U.S.S.R 19.91.0.0 содержал следующие файлы в каталоге /usr/lib: moscow, leningrad, kiev, odessa и petrograd (символьная связь с файлом leningrad). Разработчики решили разделить набор файлов U.S.S.R19.91.0.0 на два набора файлов: Ukraine.lib 19.94.0.0 и Russia.lib 19.94.0.0. Набор файлов Ukraine.lib состоит из файлов kiev и odessa. Набор файлов Russia.lib содержит файл moscow. Файл leningrad устарел и заменен файлом st.petersburg в наборе файлов Russia.lib.

В этом случае необходимо создать файл Ukraine.lib.rm_inv, поскольку набор файлов Ukraine.lib не полностью заменяет набор файлов U.S.S.R. Файл Ukraine.lib.rm_inv должен быть пустым, так как при установке набора файлов Ukraine.lib не нужно удалять файлы, относящиеся к устаревшему набору файлов U.S.S.R.

В этом случае необходимо создать файл Russia.lib.rm_inv, поскольку набор файлов Russia.lib не полностью заменяет набор файлов U.S.S.R. Поскольку файл leningrad заменен другим файлом в наборе Russia.lib.rm_inv, его следует указать в файле Russia.lib.rm_inv. В этом случае файл leningrad будет автоматически удален при установке набора файлов Russia.lib. Файл Russia.lib.rm_inv должен содержать следующую информацию:
/usr/lib/leningrad:
 symlinks = /usr/lib/petrograd
/usr/lib/petrograd:

Установочные файлы для дополнительных дисковых подсистем

Если для поставляемого устройства, подключаемого к SCSI или системной шине, требуются собственные драйвер и процедуры настройки, то изготовитель этого устройства должен поставлять специальные установочные файлы. Эти файлы должны быть записаны в формате backup на дискете, входящей в комплект поставки устройства, и им должны быть присвоены имена ./signature и ./startup. В файле signature должна содержаться строка target. Файл startup должен представлять собой сценарий, который разархивирует нужные файлы с дискеты с помощью команды restore, а затем выполняет все действия по настройке и подготовке устройства к работе.

Формат дистрибутивных носителей

Установочные пакеты программных продуктов могут поставляться на следующих видах носителей:

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

Магнитная лента

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

  • Файл 1 должен быть пустым. (Он может быть непустым только у загрузочных магнитных лент.)
  • Файл 2 должен быть пустым. (Он может быть непустым только у загрузочных магнитных лент.)
  • Файл 3 должен представлять собой таблицу содержимого с информацией о том, какие установочные образы записаны на данном наборе магнитных лент. Соответственно, на каждой магнитной ленте набора должна быть записана одна и та же полная таблица содержимого, отличающаяся только порядковыми номерами лент в наборе.
  • Файлы с 4 по (N+3) содержат установочные образы продуктов 1 - N в формате backup.
  • Каждый установочный образ должен целиком располагаться на одной ленте.
  • После каждого файла на ленте должна быть записана метка конца файла.

компакт-диск

Компакт-диски с установочными образами нескольких продуктов должны соответствовать протоколу RRGP (Rock Ridge Group Protocol). Установочные пакеты должны находиться в каталоге, содержащем следующие данные:

  • Установочные образы в формате backup.
  • Таблицу содержимого в файле .toc с информацией обо всех установочных образах, записанных в данном каталоге.

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

Многотомный установочный носитель из компакт-дисков должен удовлетворять следующим требованиям:
  • На каждом диске должен существовать каталог /installp/mvCD со следующей информацией:
    1. Файл содержимого (.toc) с информацией обо всех установочных образах, записанных на всех томах. На всех томах в каталоге /usr/sys/mvCD должен быть записан один и тот же файл .toc.
    2. Текстовый файл с именем volume_id, в котором в первой строке указан номер компакт-диска в наборе.
    3. Символьная связь с именем vol%n, где n - десятичный номер диска в наборе. Эта символьная связь должна указывать на каталог продуктов, записанных на данном компакт-диске. Обычно эта связь указывает на ../ppc.
  • Файл с таблицей содержимого (.toc) в каталоге /installp/mvCD должен соответствовать обычным требованиям к этому файлу. Единственное отличие файла .toc для многотомного носителя заключается в том, что расположение каждого установочного образа должно начинаться с каталога vol% n, где n - номер тома, на котором записан этот установочный образ.

AIX 5.2Пример:

Набор файлов A записан в файле A.bff на томе 1. Набор файлов B записан в файле B.bff на томе 2. В таблице содержимого в каталоге /installp/mvCD расположение наборов файлов A и B указано как vol%1/A.bff и vol%2/B.bff, соответственно. В таблице содержимого в каталоге /installp/ppc тома 1 расположение А указано как A.bff. В таблице содержимого в каталоге /installp/ppc тома 2 расположение B указано как B.bff.

Структура каталогов на компакт-дисках в AIX 5.1 и более поздних версиях допускает применение альтернативных программ установки, а также поддерживает установку на различных платформах.

Дискеты

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

  • Таблица содержимого с описанием образов, записанных на многотомном носителе.
  • Установочные образы всех продуктов.

При записи файлов на дискеты должны быть выполнены следующие правила:

  • Данные должны записываться в виде потока; в блоке 0 каждой дискеты должен быть записан ИД тома. Данные, записанные в блоке 1 очередного тома, рассматриваются как логическое продолжение данных, записанных в последнем блоке предыдущего тома.
  • Начало каждого файла должно приходиться на начало 512-байтового блока.
  • Первым файлом набора дискет должна быть таблица содержимого. Дополните этот файл таким образом, чтобы его последний сектор был заполнен нулевыми байтами (x'00'). В конце таблицы содержимого должен быть хотя бы один нулевой байт - признак границы. Если таблица содержимого занимает целое число секторов, следующий сектор должен быть целиком заполнен нулевыми байтами.
  • После таблицы содержимого должны быть последовательно записаны установочные образы всех продуктов. Последний сектор каждого образа должен дополняться нулевыми байтами. Если установочный образ занимает целое число секторов, то дополнительный нулевой сектор не требуется.
  • В блоке 0 каждой дискеты должен быть записан ИД тома. ИД тома записывается в отдельном секторе в следующем формате:
    Позиция Описание
    Байты 0:3 Сигнатура. Установочным носителям выделена сигнатура 3609823513=x'D7298918'.
    Байты 4:15 Дата и время. Это значение должно быть указано в формате месяц-день-час-минута-секунда-год. В поле час должно быть указано значение от 00 до 23. Все поля даты и времени состоят из 2 цифр. Поэтому для обозначения марта в поле месяц должно быть указано 03, а не 3, а для обозначения 1994 года в поле год должно быть указано 94, а не 1994.
    Байты 16:19 Двоичный номер дискеты в данном наборе. Первой дискете присваивается номер x'00000001'.
    Байты 20:511 Двоичные нули.
Табл. 8. Файл с таблицей содержимого
Имя поля Формат Separator Описание
1. Том Символ Пробел Для магнитной ленты и дискет в этом поле указывается номер тома, на котором записаны данные. Для жестких дисков и компакт-дисков в этом поле должен быть указан 0.
2. Дата и время ММДДччммссГГ Пробел Для магнитной ленты и дискет в этом поле указывается время создания тома 1. Для жестких дисков и компакт-дисков в этом поле указывается время создания файла .toc. Более подробная информация приведена в разделе Формат даты и времени далее в этой главе.
3. Формат заголовка Символ Символ новой строки Число, указывающее формат файла с таблицей содержимого. Допустимы следующие значения:
  • 1 -AIX версии 3.1
  • 2 - версия 3.2
  • 3 -AIX версии 4.1 и более поздних версий
  • B - лента mksysb (нельзя применять с командой installp)
4. Расположение установочного образа продукта Символ Пробел Для магнитной ленты и дискет в этом поле указывается строка в формате: ттт:ббббб: ррррррр. Подробные сведения об этом приведены в разделе Расположение установочного образа на дискете и магнитной ленте далее в этой главе. Для жестких дисков и компакт-дисков в этом поле указывается имя файла. Имя файла указывается без пути к нему.
5. Информация о пакете Формат файла lpp_name Символ новой строки Содержимое файла lpp_name из данного образа. Подробные сведения об этом приведены в разделе Файл с информацией о пакете lpp_name.
Прим.: Поля 4 и 5 задаются для каждого установочного образа, записанного на носителе.

Формат даты и времени

Дата и время указываются в следующем формате:

месяц-день-час-минута-секунда-год

В поле час должно быть указано значение от 00 до 23. Все поля даты и времени состоят из 2 цифр. Поэтому для обозначения марта в поле месяц должно быть указано 03, а не 3, а для обозначения 1994 года в поле год должно быть указано 94, а не 1994.

Формат поля расположения

Расположение установочного образа указывается в формате ттт:ббббб:ррррррр:

Магнитная лента

ттт
- номер тома магнитной ленты.
ббббб
- номер файла на магнитной ленте.
рррррррр
- размер файла в байтах.

Дискета

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

Перемещаемая установка AIX

Хотя перемещаемая установка AIX поддерживается стандартными утилитами установки AIX (такими как installp, instfix , lslpp и lppchk), использование перемещения необходимо приложениям, устанавливаемым в рабочем разделе. Причина этого состоит в том, что стандартная конфигурация System WPAR не включает перезаписываемые файловые системы/usr или /opt. Поэтому, возможно, потребуется перенастроить установку приложения для установки в местах, отличных от обычного расположения /usr или /opt.

В дополнение к возможности устанавливать наборы файлов в стандартном месте установки (“/”), администратор может устанавливать перемещаемые пакеты в альтернативные места установки. Это позволяет администратору выполнять следующие действия:
  • Устанавливать несколько установок одного и того же пакета installp и управлять ими в одном экземпляре операционной системы AIX
  • Устанавливать разные версии одного и того же пакета installp и управлять ими в одном экземпляре операционной системы AIX
  • Использовать стандартные средства трассировки installp (такие как lppchk, lslpp, instfix и inulag) для проверки данных установки всех перемещенных экземпляров установки и выдачи отчетов по ним
  • Прикреплять и отделять предустановленные расположения ПО в данной системе (хостинг приложений).

Терминология

путь к корневому каталогу установки
Базовый каталог установки приложения. Стандартный путь установки installp - "/".
путь к корневому каталогу по умолчанию
Путь к корневому каталогу установки по умолчанию ("/").
перемещенный путь установки
Любой путь к корневому каталогу установки, не являющийся стандартным. Путь может быть любым, за исключением "/". Имя пути не должно превышать 512 символов.
перемещаемые приложения
Приложение, которое может быть установлено в нестандартный корневой каталог установки.
USIL (Пользовательский путь установки)
Заданный пользователем путь к перемещенному каталогу установки экземпляра.

USIL

Пользовательский путь установки или USIL - это трассируемый перемещенный путь к каталогу установки, созданной администратором. Это расположение трассируется системой и может быть использовано как альтернативный путь установки для пакетов с поддержкой перемещения. Множественные установки и/или версии программных пакетов можно устанавливать в отдельные пользовательские каталоги в одной системе. Также можно подключить или отключить существующий путь установки в системе.

Каждый экземпляр пользовательского пути установки содержит собственный набор реестра программного обеспечения (SWVPD) во всех трех каталогах installp:
  • <InstallRoot>/etc/objrepos
  • <InstallRoot>/usr/lib/objrepos
  • <InstallRoot>/usr/share/lib/objrepos
Примечания:
  1. Текущие классы объекта реестра программного обеспечения включают следующее:
    • product
    • lpp
    • inventory
    • history
    • исправление
    • vendor
    • lag
  2. Каждый экземпляр реестра программного обеспечения отображает стандартную структуру реестра в каталоге перемещения.

Команды управления USIL

/usr/sbin/mkusil

Создает или подключает экземпляр пользовательского пути установки.

mkusil -R RelocatePath -c Comments [X Fa]

-a
Подключает существующую установку как экземпляр пользовательского пути установки
-c
Комментарии, включаемые в определение пользовательского пути установки (можно видеть с помощью команды lsusil)
-R
Путь к созданному каталогу пользовательского пути установки. Каталог должен существовать.
-X
Автоматически увеличивать размер используемого пространства при необходимости.

/usr/sbin/lsusil

Перечисляет существующие экземпляры пользовательского пути установки.

lsusil [-R RelocatePath | "ALL"]

-R
Путь к существующему каталогу пользовательского пути установки.

/usr/sbin/rmusil

Удаляет все существующие экземпляры.

rmusil -R RelocatePath

-R
Путь к существующему каталогу пользовательского пути установки.
Прим.: Команда rmusil удаляет только ссылки на пользовательский путь установки в реестре программного обеспечения. Файлы в каталоге не удаляются.

/usr/sbin/chusil

Изменяет атрибут экземпляра пользовательского пути установки.

chusil -R RelocatePath -c NewComments [ X]

-c
Включить новые комментарии в определение пользовательского пути установки (можно видеть с помощью команды lsusil)
-R
Путь к существующему каталогу пользовательского пути установки.
-X
Автоматически увеличивать размер используемого пространства при необходимости.

Утилиты перемещаемой установки

Для сохранения локализация неполадок исходный код все изменения пользовательского пути установки локализуются в отдельно компилируемый модуль. Утилиты перемещаемой установки включают следующие модули пользовательского уровня:
  • /usr/sbin/mkusil
  • /usr/sbin/rmusil
  • /usr/sbin/lsusil
  • /usr/sbin/chusil
Прим.:
  1. Каждая утилита помечена флагом -R RelocatePath .
  2. При работе с перемещаемыми пакетами installp необходимо использовать вышеперечисленные утилиты.

Требования к пакетам перемещаемых установок

Пакетов приложения должен поддерживать перенос установки. Рекомендуется применять следующие указания:
  • Пакет перемещаемой установки не должен записывать объекты реестра вне пути установки.
  • Пакет перемещаемой установки не должен записывать пользовательские данные вне пути установки.
  • Пакет перемещаемой установки должен содержать расширенный атрибут RELOCATABLE для каждого перемещаемого набора файлов. Набор файлов - это минимально переместимый устанавливаемый модуль.
  • Пакет перемещаемой установки не должен иметь дополнений, вне каталога установки. Он может иметь дополнительные наборы файлов, установленные в стандартном собственном каталоге установки.

Требования к выполнению перемещаемых приложений

Проект приложения должен поддерживать запуск из среды установки. Рекомендуется применять следующие указания:
  • Приложение должно содержать метод определения места установки или функционировать без зависимости от него.
  • Приложение должно обращаться к исполняемым компонентам с учетом места установки.
  • Приложение должно обращаться к компонентам данных с учетом места установки или коллективно использовать данные других экземпляров приложения.
  • Приложение не должно вносить постоянные изменения вне места установки.

Объект класса ODM USIL connector

Объектный класса администратора объектных данных коннектора пользовательского пути установки находится в файле /etc/objrepos/usilc и содержит данные, соединяющие стандартный реестр программного обеспечения с экземплярами пользовательского пути установки.

Ниже приведен пример записи этого объектного класса, содержащегося в swvpd.cre:
/*  Коннектор расположения пользовательской установки  */
/*  Connects the default install path to all relocated install paths.  */
class   usilc {
        vchar   path[1024];       /* Пользовательский путь установки */
        vchar   comments[2048];   /* Комментарии пользовательского пути установки  */
        long    flags;            /* Флаги пользовательского пути установки  */
        };     

Перечисляет все пути установки с опцией -R "ALL" или -R "all"

Команды lslpp и lppchk могут выполнять операции перечисления в местах установки, если используется синтаксис -R "ALL".

Операции подключения и отключения

Операция подключения позволяет пользователю интегрировать существующий отключенный пользовательский путь установки в реестр программного обеспечения.

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

лицензирование installp

Новый экземпляр пользовательского пути установки имеет пустое лицензионное соглашение (лицензионное соглашение объектного класса администратора объектных данных installp ). Для любых наборов файлов или лицензионных программа необходима лицензия в соответствии с соглашениями installp. Лицензии не распространяются на экземпляры пользовательских установок.

|Защищенная компьютерная база (TCB)

Установка экземпляров USIL не поддерживается системами с активированным TCB.

Переносимые реквизиты

Новая семантика упаковки указывает расположение перемещаемых реквизитов. Упаковщик может указать расположение реквизитов - в каталоге по умолчанию или в пользовательском каталоге.

Ниже приведены примеры семантики:
  • prereq_ r = prereq в пользовательском каталоге
  • ifreq_r = ifreq в пользовательском каталоге
  • coreq_r = coreq в пользовательском каталоге
  • instreq_r = instreq в пользовательском каталоге

Данные определенные типы реквизитов являются стандартными: prereq, ifreq, coreq и instreq). Данные реквизиты находятся в стандартном каталоге.

Изменения TOC для переносимых пакетов

Ниже приведен пример нового раздела реквизитов в файле таблица содержания:
sscp.rte.1.0.0.5.U.PRIVATE.bff 4 R S sscp {
sscp.rte 01.00.0000.0005 1 N B En_US Sscp
[
*coreq bos.games 1.1.1.1  <-- стандартный реквизит в стандартном разделе
*prereq bos.rte 1.1.1.1   <-- стандартный реквизит в стандартном разделе
%
/usr/bin 20
/etc 20
INSTWORK 72 40
%
%
%
IY99999  1 APAR text here.
%
RELOCATABLE <-- тег атрибута, указывающий перемещаемый пакет
%
*prereq bos.rte 1.1.1.1   <-- стандартный реквизит в пользовательском разделе
*coreq_r bos.games 1.1.1.1 <-- стандартный реквизит в пользовательском разделе
]
}
Примечания:
  1. Если раздел переносимых реквизитов присутствует при переносимой установке, то он используется в качестве раздела реквизитов при установке.
  2. Если во время установки в новом каталоге нет раздела перемещаемого реквизита, используется стандартный раздел реквизита. Таким образом все реквизиты используются по умолчанию.
  3. Установка по умолчанию (не переносимая) не использует раздел переносимых реквизитов.
Табл. 9. Алгоритм работы команды installp
Команда Описание
Установка При установке базового уровня набора файлов старая версия этого набора файлов, если она была установлена, удаляется из системы, и поэтому это действие равносильно фиксации. В дальнейшем пользователь может удалить этот набор файлов из системы.

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

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

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

Повторная установка набора файлов поверх того же уровня не равносильна удалению этого набора файлов с последующей установкой. Сценарий повторной установки (см. /usr/lib/instl/rminstal) удаляет из системы файлы текущей установленной версии, но не выполняет сценарии unconfig и unpre*. В связи с этим, создаваемые вами сценарии не должны исходить из предположения о том, что был выполнен сценарий unconfig. При принятии решений относительно того, была ли удалена информация о конфигурации, сценарий .config должен предварительно проверять среду.

Предположим, что сценарий настройки набора файлов ras.berry.rte добавляет строку в файл crontab пользователя root. Если вы заново установите набор файлов ras.berry.rte, то в файле crontab окажется две записи, поскольку при повторной установке не выполняется сценарий unconfig (который должен удалять строку из файла crontab). Сценарий настройки в подобной ситуации должен сначала удалять существующую запись, а затем добавлять собственную.

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

В этом разделе описаны действия, выполняемые командой installp при установке базового уровня или обновления набора файлов.

  1. Восстановить информационный файл lpp_name для указанного пакета с заданного устройства.
  2. Убедиться, что все запрошенные наборы файлов записаны на установочном носителе.
  3. Убедиться, что уровень запрошенных наборов файлов допускает установку этих наборов в системе.
  4. Восстановить управляющие файлы из библиотеки liblpp.a в каталог пакета (/usr/lpp/имя-пакета для пакетов usr и usr/root. Управляющие файлы для компонента root пакета usr/root находятся в файле /usr/lpp/имя-пакета /inst_root/liblpp.a).
  5. Проверить требования к объему свободной дисковой памяти.
  6. Проверить, что все необходимое программное обеспечение (наборы файлов, определенный уровень которых должен быть установлен в системе перед началом установки данных наборов файлов) уже установлено или выбрано для установки.
  7. Определить, нужно ли принять какие-либо лицензионные соглашения для продолжения установки.
  8. Если устанавливается базовый уровень набора файлов, то просмотреть реестр программного обеспечения (SWVPD) и проверить, установлен ли в системе какой-нибудь уровень этого набора файлов или какие-либо из наборов файлов, перечисленных в файле набор-файлов.namelist. Если набор-файлов уже установлен, то записать имя и уровень установленного набора файла в файл рабочий-каталог/набор-файлов.installed_list.

    Если набор-файлов не установлен, но установлены какие-либо наборы файлов, перечисленные в файле набор-файлов.namelist, то сохранить их имена и уровни в файле рабочий-каталог/набор-файлов.installed_list. Рабочий-каталог обычно совпадает с каталогом, в котором устанавливается весь пакет за исключением компонентов root, которые устанавливаются в каталог /lpp/имя-пакета.

  9. Если устанавливается базовый уровень набора файлов, то вызвать сценарий /usr/lib/instl/rminstal для каждого из устанавливаемых наборов файлов.
    Прим.: (Если не указано иное, то к этому моменту существующие файлы должны быть уже восстановлены из библиотеки управляющих файлов liblpp.a).
    1. Если файл набор-файлов.pre_rm существует, то вызвать набор-файлов.pre_rm для подготовки к удалению текущего уровня набора файлов.
    2. Если существует файл рабочий-каталогнабор-файлов.installed_list, то переместить существующие файлы, перечисленные в файле набор-файлов.cfgfiles, в каталог сохранения (путь к каталогу указан в переменной среды MIGSAVE)."
    3. Если в системе уже установлен какой-либо уровень набора-файлов, то удалить его файлы из системы и сведения об этом наборе-файлов из SWPD (за исключением хронологии).
    4. Если существует файл рабочий-каталог/набор-файлов.installed_list и при этом существует файл набор-файлов.rm_inv или файл набор-файлов.namelist содержит более одного набора файлов, либо в файле набор-файлов.namelist указан только bos.obj, то необходимо выполнить следующие действия:
      1. Удалить из системы файлы, перечисленные в файле набор-файлов.rm_inv, и удалить из SWVPD информацию об этих файлах.
      2. Удалить из системы файлы, перечисленные в файле набор-файлов.inventory, и удалить из SWVPD информацию об этих файлах.
      3. Удалите из SWVPD информацию обо всех наборах файлов, перечисленных в файле набор-файлов.namelist.
    5. Если существует файл рабочий-каталог/набор-файлов.installed_list, содержащий только один набор файлов, и список набор-файлов.namelist содержит только один набор файлов, то необходимо удалить файлы этого набора файлов, а также удалить из SWVPD информацию об этих файлах (за исключением хронологических сведений).
    6. Для каждого компонента пакета (либо только для usr, либо для usr, а затем для root)
      1. Присвоить нужные значения переменным среды INUTREE (U для usr и M для root) и INUTEMPDIR (имя ранее созданного временного рабочего каталога).
      2. Если в каталоге пакета существует управляющая программа instal (создавать ее не рекомендуется), то запустить ./instal, в противном случае запустить сценарий по умолчанию /usr/lib/instl/instal . Если управляющая программа instal не существует в каталоге пакета, то задать значение в переменной среды INUSAVEDIR.
      3. Если в каталоге пакета существует управляющая программа update (ее создавать не рекомендуется), то запустить ./update. Если управляющая программа update не существует в каталоге пакета, то запустить сценарий по умолчанию /usr/lib/instl/update.
      4. Если файл status был успешно создан сценарием instal или update, то с помощью файла status определить результат установки каждого набора файлов. Если файл status не был создан, то сделать вывод, что все запрошенные наборы файлов из пакета не были установлены.
      5. Если набор файлов был успешно установлен, то обновить реестр программного обеспечения (SWPD) и зарегистрировать требования соответствующего лицензионного соглашения. Если набор файлов не был установлен, то запустить команду /usr/lib/instl/cleanup или находящийся в каталоге пакета сценарий lpp.cleanup для очистки данных после неудачной установки.

Алгоритм работы стандартного сценария установки или обновления

Команда installp передает в качестве первого параметра сценария установки instal или update имя установочного устройства. Во втором параметре указывается полный путь к файлу со списком устанавливаемых или обновляемых наборов файлов. Ниже этот параметр обозначается $FILESETLIST. Стандартные сценарии instal и update отличаются друг от друга. текущий каталог - это каталог пакета. В каталоге /tmp создается временный каталог INUTEMPDIR для хранения рабочих файлов.

Стандартные сценарии instal и update выполняют следующие действия:

  1. Выполнить следующие действия для каждого набора файлов из $FILESETLIST:
    1. Если набор файлов представляет собой обновление, то выполнить программу набор-файлов.pre_u (pre_update) при условии, что она существует. Если набор файлов не является обновлением, то выполнить программу набор-файлов.pre_i (pre_installation) при условии, что она существует.
    2. Создать список файлов для восстановления из пакета, добавив содержимое файла набор-файлов.al в новый файл INUTEMPDIR/master.al.
    3. Если выполняется обновление и необходимо сохранить какие-либо файлы, и при этом существует архивный управляющий файл lpp.acf, то

      Сохранить обновляемые элементы архива библиотек.

    4. Если операция была выполнена успешно, то добавить текущий набор файлов в список устанавливаемых наборов файлов в файле $FILESETLIST.new.
  2. Если устанавливается обновление, и необходимо сохранить какие-либо файлы, то запустить сценарий inusave для сохранения текущих версий файлов.
  3. При обработке компонента root запустить сценарий inucp для копирования файлов из списка установки компонента root. Если обрабатывается другой компонент, то запустить сценарий inurest для восстановления файлов из списка установки компонента usr.
  4. Выполнить следующие действия для каждого набора файлов, указанного в файле $FILESETLIST.new:
    Прим.: В случае возникновения ошибки при выполнении любого из перечисленных шагов информация об этой ошибке записывается в файл status, а обработка набора файлов прекращается.
    1. Проверить, установлена ли в системе текущая или более старая версия набора файлов, а также установлены ли наборы файлов, перечисленные в файле набор-файлов.namelist. Если да, то экспортировать переменные среды INSTALLED_LIST и MIGSAVE. Такая операция называется обновлением версии.
    2. При установке обновления запустить сценарий набор-файлов.post_u (если он существует). Если сценарий набор-файлов.post_u не существует, то запустить набор-файлов.post_i (если он существует).
    3. Если существует файл набор-файлов.cfgfiles, то запустить сценарий /usr/lib/instl/migrate_cfg для обработки файлов конфигурации.
    4. Запустить sysck для добавления информации из файла набор-файлов.inventory в реестр программного обеспечения (SWVPD).
    5. Если существует файл набор-файлов.tcb, и в базе данных ODM /usr/lib/objrepos/PdAt установлен атрибут tcb_enabled, то запустить команду tcbck для добавления в систему информации о защищенной компьютерной базе.
    6. Если существует файл набор-файлов.err, то запустить сценарий errupdate для добавления шаблонов ошибок.
    7. Если существует файл набор-файлов.trc, то добавить шаблоны форматирования отчетов трассировки с помощью команды trcupdate.
    8. Если устанавливается обновление или существует файл рабочий-каталог/набор-файлов.installed_list то вызвать все сценарии вида набор-файлов.odmdel и набор-файлов.*.odmdel для удаления ненужной информации из базы данных ODM.
    9. Вызвать команду odmadd для всех файлов набор-файлов.odmadd и набор-файлов.*.odmadd для добавления информации в базу данных ODM.
    10. Если устанавливается обновление, то запустить сценарий набор-файлов.config_u (обновление конфигурации набора файлов), если он существует. В противном случае запустить сценарий набор-файлов.config (настройка набора файлов), если он существует.
    11. Указать в файле status, что текущий набор файлов успешно обработан.
  5. Создать связи с управляющими файлами, необходимыми для удаления набора файлов, в каталоге deinstl пакета. Это могут быть следующие файлы:
    • lpp.deinstal
    • набор-файлов. al
    • набор-файлов. inventory
    • набор-файлов. pre_d
    • набор-файлов. unpre_i
    • набор-файлов. unpre_u
    • набор-файлов. unpost_i
    • набор-файлов. unpost_u
    • набор-файлов. unodmadd
    • набор-файлов. unconfig
    • набор-файлов. unconfig_u
    • $SAVEDIR/набор-файлов. *.rodmadd
    • SAVEDIR/набор-файлов. *.unodmadd

Алгоритмы работы стандартных сценариев аннулирования и очистки

В этом разделе описаны шаги, выполняемые командой installp при аннулировании обновлений и при очистке после неудачной установки наборов файлов. Стандартные сценарии cleanup и reject расположены в каталоге /usr/lib/instl и фактически представляют собой одну и ту же программу. Алгоритм работы этой программы незначительно отличается в случаях, когда она вызывается как reject и как cleanup. Если набор файлов состоит из компонентов usr и root, то компоненты root обрабатываются раньше компонентов usr.

  1. Если выполняется операция аннулирования, то убедиться, что одновременно аннулируются все зависимые обновления.
  2. Для каждого компонента пакета (например, usr или root) выполнить следующие действия:
    1. Присвоить значения переменным среды INUTREE ( U для usr и M для root.) и INUTEMPDIR.
    2. Если в текущем каталоге (INULIBDIR) существует управляющий файл reject, то запустить сценарий ./lpp.reject. В противном случае запустить сценарий по умолчанию /usr/lib/instl/reject.
  3. Обновить реестр программного обеспечения (SWVPD).

Команда installp передает сценарию reject в первом параметре неопределенное значение, а во втором - полное имя файла со списком аннулируемых наборов файлов (ниже этот файл обозначается как $FILESETLIST).

В сценариях cleanup и reject задействован ряд дополнительных файлов.

Стандартные сценарии cleanup и reject выполняют следующие действия:

  1. Выполнить следующие действия для каждого набора файлов из $FILESETLIST:
    1. Если вызван сценарий cleanup, определить по содержимому файла имя-пакета.s, на каком шаге была прервана установка, и перейти к соответствующему шагу. Сценарий cleanup начнет работу только с того шага, на котором произошла ошибка при установке. Например, если ошибка произошла при выполнении сценария Набор-файлов.post_i, то очистка для этого набора файлов начнется с шага i, поскольку отмена более поздних операций установки не требуется.
    2. Аннулировать результаты настройки, выполненной во время установки:

      Если требуется аннулировать обновление, то вызвать сценарий набор-файлов.unconfig_u, если он существует. Иначе вызвать сценарий набор-файлов.unconfig, если он существует.

    3. Выполнить сценарии вида набор-файлов.*.unodmadd и набор-файлов.unodmadd для удаления записей ODM, добавленных во время установки.
    4. Выполнить сценарии вида набор-файлов .*.rodmadd и набор-файлов.rodmadd, если они существуют, для восстановления записей ODM, удаленных во время установки.
    5. Если существует файл набор-файлов.undo.trc, то выполнить сценарий trcupdate, который удаляет все изменения, внесенные в шаблоны отчетов трассировки при установке набора файлов.
    6. Если существует файл набор-файлов.undo.err, то вызвать сценарий errupdate, который удаляет все изменения, внесенные в шаблоны ошибок во время установки.
    7. Если существует файл набор-файлов.tcb, и в базе данных ODM /usr/lib/objrepos/PdAt задан атрибут tcb_enabled, то удалить из системы информацию из защищенной компьютерной базы с помощью команды tcbck.
    8. Если существует файл набор-файлов.inventory, то выполнить сценарий sysck, который удаляет изменения, внесенные в базу данных программного обеспечения.
    9. Аннулировать результаты операций настройки, выполненных после установки набора файлов:

      Если требуется аннулировать обновление, то вызвать сценарий набор-файлов.unpost_u, если он существует. Иначе вызвать сценарий набор-файлов.unpost_i, если он существует.

    10. Создать список установки (файл master.al) на основе файлов набор-файла.al.
    11. Добавить набор-файлов в файл $FILESETLIST.new.
  2. Если существует файл $INUTEMPDIR/master.al, то выполнить следующие действия:
    1. Перейти в каталог / (root).
    2. Удалить все файлы, указанные в файле master.al.
  3. Прочитать файл $FILESETLIST.new и выполнить следующие действия:
    1. С помощью программы inurecv восстановить все сохраненные файлы.
    2. Если требуется аннулировать обновление, то вызвать сценарий набор-файлов.unpre_u, если он существует. Иначе вызвать сценарий набор-файлов.unpre_i, если он существует.
    3. Удалить файлы управления установкой.
  4. Удалить файл состояния имя-пакета.s.

Алгоритм удаления программного обеспечения

В этом разделе описаны действия, выполняемые командой installp при удалении набора файлов. Если набор файлов состоит из компонентов usr и root, то компоненты root обрабатываются раньше компонентов usr.

  1. Просмотреть список необходимого программного обеспечения и убедиться, что одновременно удаляются все зависимые наборы файлов.
  2. Для каждого компонента пакета (например, usr или root) выполнить следующие действия:
    1. Присвоить нужные значения переменным среды INUTREE (U для usr, M для root и S для share) и INUTEMPDIR (рабочий каталог installp в файловой системе /tmp).
    2. Перейти в каталог INULIBDIR.
    3. Если в текущем каталоге существует файл deinstal, то запустить сценарий ./lpp.deinstal. Если управляющий файл deinstal отсутствует в текущем каталоге, то запустить сценарий по умолчанию /usr/lib/instl/deinstal.
  3. Удалить файлы, относящиеся к данному набору файлов.
  4. Удалить всю информацию о наборе файлов, кроме информации хронологии, из реестра программного обеспечения (SWVPD).
  5. Отменить регистрацию лицензионного соглашения на применение набора файлов.

Команда installp передает сценарию deinstal в качестве первого параметра полное имя файла со списком удаляемых наборов файлов. Этот файл в дальнейшем будет обозначаться как $FILESETLIST.

Сценарий deinstal выполняет следующие действия:

  1. Выполнить следующие действия для каждого набора файлов, указанного в файле $FILESETLIST:
  2. Если существует файл набор-файлов.unconfig_d:

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

  3. Если файл набор-файлов.unconfig_d не существует:
    1. Для каждого обновления набора файлов выполнить следующие действия:
      • Выполнить все сценарии набор-файлов.unconfig_u для аннулирования всех изменений, внесенных в конфигурацию при обновлении.
      • Выполнить все сценарии набор-файлов.*.unodmadd и набор-файлов.unodmadd для удаления записей ODM, добавленных во время обновления.
      • Выполнить все сценарии набор-файлов.*.rodmadd и набор-файлов.rodmadd для добавления записей ODM, удаленных во время обновления.
      • Если существует файл набор-файлов.undo.err, то выполнить сценарий errupdate, который аннулирует все изменения в шаблонах ошибок.
      • Если существует файл набор-файлов.undo.trc, то выполнить сценарий trcupdate, который аннулирует изменения в шаблонах отчетов трассировки.
      • Выполнить сценарий набор-файлов.unpost_u, который аннулирует результаты настройки, выполненной после установки обновления.
    2. Для базового уровня набора файлов выполнить следующие действия:
      • Выполнить сценарии вида набор-файлов.*.unodmadd и набор-файлов .unodmadd для удаления записей ODM, добавленных во время установки.
      • Выполнить сценарии вида набор-файлов.*.rodmadd и набор-файлов.rodmadd для добавления в базу данных ODM записей, удаленных во время установки.
      • Если существует файл набор-файлов.undo.err, то выполнить сценарий errupdate, который аннулирует все изменения в шаблонах ошибок.
      • Если существует файл набор-файлов.undo.trc, то выполнить сценарий trcupdate, который аннулирует изменения в шаблонах отчетов трассировки.
      • Выполнить сценарий набор-файлов.unconfig_i, чтобы аннулировать результаты настройки, выполненной во время установки.
      • Выполнить сценарий набор-файлов.unpost_i, чтобы аннулировать результаты настройки, выполненной после установки.
  4. Удалить из системы файлы данного набора и информацию о них.
  5. Если файл набор-файлов.unconfig_d не существует:
    1. Для каждого обновления набора файлов выполнить все сценарии набор-файлов.unpre_u, чтобы аннулировать результаты настройки, выполненной до установки.
    2. Для базового уровня набора файлов выполнить все сценарии набор-файлов.unpre_i для отмены настройки, выполненной до установки.
  6. Удалить все пустые каталоги, оставшиеся после удаления набора файлов.
    Прим.: Если во время выполнения сценария deinstal возникнет ошибка, информация о ней будет занесена в протокол, но выполнение сценария будет продолжено. В этом состоит отличие сценария deinstal от всех остальных сценариев команды installp, которые прекращают обработку набора файлов при возникновении ошибки. Поскольку отменить действие операции удаления нельзя, при возникновении ошибки наиболее разумное решение заключается в продолжении удаления.

Файл результатов установки

$INUTEMPDIR/status
В этом файле содержится список наборов файлов, которые должны были быть установлены или обновлены. Каждый набор файлов указан на отдельной строке.

Команда installp определяет по файлу status результаты обработки этих наборов файлов. Если вы будете поставлять собственные сценарии установки, они должны создавать файл status в правильном формате. Каждая строка файла status должна содержать следующую информацию:

Табл. 10. код-результатанабор-файлов
Код результата Описание
s Набор файлов обработан успешно, можно обновить реестр программного обеспечения.
f Сбой, требуется очистка
b Сбой, очистка не требуется
i Не выполнены условия установки, очистка не требуется
v Набор файлов не прошел проверку sysck

Ниже приведен пример файла status, в котором указано, что наборы файлов tcp.client и tcp.server из пакета bos.net были установлены успешно, а набор файлов nfs.client установить не удалось.

s bos.net.tcp.client
s bos.net.tcp.server
f bos.net.nfs.client
Команды, выполняемые во время установки и обновления программного обеспечения
inucp
При установке компонента root копирует файлы из каталога /usr/lpp/имя-пакета/inst_root в корневую файловую систему (/).
inulag
Выполняет функцию интерфейса процедур управления лицензионными соглашениями.
inurecv
Восстанавливает сохраненные файлы в случае сбоя, а также при аннулировании обновлений (installp -r).
inurest
Восстанавливает файлы с дистрибутивного носителя в системе в соответствии со списком установки.
inusave
Сохраняет файлы, указанные в списке установки, в каталоге сохранения программного продукта.
inuumsg
Выдает сообщения из каталога inuumsg.cat для устанавливаемого продукта.
ckprereq
Проверяет условия установки программного продукта, указанные в файле lpp_name, с учетом информации из реестра программного обеспечения (SWVPD).
sysck
Проверяет информацию об архиве программного обеспечения во время установки и обновления.
Команда sysck находится в каталоге /usr/bin. Остальные перечисленные команды находятся в каталоге /usr/sbin.

Примеры применения этих команд можно найти в стандартном сценарии установки - /usr/lib/instl/instal.