Данный подход к изменению /etc/inittab использует класс build. Сценарий класса build выполняется как сценарий интерпретатора команд, и результатом его выполнения становится новая версия исполняемого файла. Другими словами, файл данных /etc/inittab, поставляемый с этим пакетом, будет выполнен, и результатом этого выполнения станет файл /etc/inittab.
Сценарий класса build выполняется в ходе установки и удаления пакета. Параметр install передается файлу, если сценарий выполняется в ходе установки. В сценарии класса build обратите внимание на то, что действия по установке определяются посредством проверки этого параметра.
Для изменения файла /etc/inittab с помощью класса build необходимо выполнить следующие задачи.
Определить файл build в файле prototype.
Запись для файла build в файле prototype должна поместить последний в класс build и определить его тип как e (редактируемый). Убедитесь, что параметр CLASSES в файле pkginfo определен как build.
Создать сценарий класса build.
Приведенный в примере сценарий класса build делает следующее:
Изменяет файл /etc/inittab таким образом, чтобы позволить ему удалить любые существующие изменения этого пакета. Обратите внимание, что имя файла /etc/inittab жестко прописано в команде sed.
Если пакет устанавливается, добавляет новую строку к концу файла /etc/inittab. В этой строке дается комментарий с описанием происхождения данной записи.
Выполняет команду init q.
Данное решение устраняет недостатки, описанные в практических примерах Изменение файла с помощью стандартных классов и сценариев действий над классами и Изменение файла с помощью класса sed и сценария postinstall. Требуется лишь один короткий файл (помимо файлов pkginfo и prototype). Этот файл работает с несколькими экземплярами пакета, поскольку используется параметр PKGINST, а сценарий postinstall не требуется, так как команду init q можно выполнить из сценария класса build.