Чтобы создать файл базы данных в ходе установки и сохранить его копию при удалении, необходимо выполнить следующие ниже задачи.
Определите три класса.
Для данного практического примера пакета требуется определение следующих трех классов в параметре CLASSES:
Стандартный класс none, содержащий набор процессов, принадлежащий подкаталогу bin.
Класс admin, содержащий исполняемый файл config, а также каталог с файлами данных.
Класс cfgdata, содержащий каталог.
Сделайте пакет коллективно перемещаемым.
Обратите внимание, что в файле prototype ни одно из имен путей не начинается с косой черты или с переменной среды. Это означает, что они являются коллективно перемещаемыми.
Вычислите объем дискового пространства, требуемого для файла базы данных, и создайте файл space, который будет поставляться в составе пакета. Данный файл уведомляет команду pkgadd, что для пакета требуется дополнительное пространство и указывает его объем.
Создайте сценарий действия над классом для класса admin (i.admin).
Пример сценария инициализирует базу данных, используя файлы данных, принадлежащие классу admin. Для выполнения этой задачи сценарий выполняет следующие действия.
Копирует исходный файл данных в предназначенное место
Создает пустой файл с именем config.data и назначает его классу cfgdata
Выполняет команду bin/config (поставляемую с пакетом и уже установленную) для наполнения данными файла базы данных config.data с помощью файлов данных, принадлежащих классу admin
Выполняет команду installf -f для завершения установки файла config.data
Никакие особые действия для класса admin во время удаления пакета не требуются, поэтому сценарий действия над классом во время удаления не создается. Это означает, что все файлы и каталоги в классе admin удаляются из системы.
Создайте сценарий действия над классом для класса cfgdata (r.cfgdata).
Сценарий удаления создает копию файла базы данных перед его удалением. Никакие особые действия для этого класса во время установки не требуется, поэтому сценарий действия над классом во время установки не нужен.
Помните, что в качестве входных данных для сценария удаления выступает список имен путей, которые необходимо удалить. Имена путей всегда идут в обратном алфавитном порядке. Сценарий удаления копирует файлы в каталог с именем $PKGSAV. После обработки всех имен путей сценарий возвращается назад и удаляет все каталоги и файлы, связанные с классом cfgdata.
Результатом выполнения этого сценария удаления является копирование файла config.data в каталог $PKGSAV и последующее удаление файла config.data и каталога с данными.