Несмотря на то, что команда pkgproto очень полезна при создании первичного файла prototype, она не создает записей для всех объектов пакета, которые должны быть определены. Эта команда не создает полных записей. Команда pkgproto не делает ничего из перечисленного ниже.
Не создает полных записей для объектов типа v (непостоянные файлы), e (редактируемые файлы), x (монопольные каталоги) и i (информационные файлы или сценарии установки)
Не поддерживает множественные классы с единым вызовом
Как минимум необходимо изменить файл prototype и добавить в него объекты с типом файла i. Если информационные файлы и сценарии установки были сохранены на первом уровне каталога пакета (например, /home/jane/SUNWcadap/pkginfo), тогда запись в файле prototype будет выглядеть следующим образом:
i pkginfo |
Если же они не были сохранены на первом уровне каталога пакета, то потребуется указать из исходное местоположение. Пример:
i pkginfo=/home/jane/InfoFiles/pkginfo |
В качестве альтернативы можно использовать команду !search для указания местоположения, которое команда pkgmk будет искать при сборке пакета. Для получения дополнительной информации см. раздел Указание пути поиска для команды pkgmk..
Для добавления записей для объектов типа v, e и x используйте формат, описанный в разделе Формат файла prototype, или воспользуйтесь справочной страницей prototype(4).
Не забывайте всегда назначать класс для файлов типа e (редактируемые) и создавать для него связанный сценарий действия над классом. В противном случае файлы будут удалены в ходе удаления пакета, даже если указанное имя пути совместно используется другими пакетами.
При использовании команды pkgproto для создания базового файла prototype можно назначить все объекты пакета классу none или одному определенному классу. Как показано в разделе Пример. Создание файла prototypeс помощью команды pkgproto, базовая команда pkgproto назначает все объекты классу none. Чтобы назначить все объекты какому-либо определенному классу, можно использовать параметр -c. Пример:
$ pkgproto -c classname /home/jane/SUNWcadap > /home/jane/InfoFiles/prototype |
При использовании нескольких классов придется изменить файл prototype вручную и отредактировать поле class для каждого объекта. При использовании классов необходимо также определить параметр CLASSES в файле pkginfo, а также написать сценарии действий над классами. Использование классов является необязательным и подробно обсуждается в разделе Создание сценариев действий над классами.
При наличии файла prototype, созданного ранее при помощи команды pkgproto, как описано в разделе Пример. Создание файла prototypeс помощью команды pkgproto, в нем требуется произвести некоторые изменения.
Необходима запись для файла pkginfo.
Поле path необходимо перевести в формат path1=path2, поскольку источник пакета находится в каталоге /home/jane . Так как исходный пакет представляет собой иерархический каталог, а команда !search не может осуществлять поиск рекурсивно, проще использовать формат path1=path2.
Поля owner и group должны содержать имена существующих в целевой системе пользователей и групп. Следовательно, при указании владельца jane возникнет ошибка, так как данный владелец не является частью операционной системы SunOSTM.
Измененный файл prototype будет выглядеть следующим образом:
i pkginfo=/home/jane/InfoFiles/pkginfo d none SUNWcadap=/home/jane/SUNWcadap 0755 root sys d none SUNWcadap/demo=/home/jane/SUNWcadap/demo 0755 root bin f none SUNWcadap/demo/file1=/home/jane/SUNWcadap/demo/file1 0555 root bin d none SUNWcadap/srcfiles=/home/jane/SUNWcadap/srcfiles 0755 root bin f none SUNWcadap/srcfiles/file5=/home/jane/SUNWcadap/srcfiles/file5 0555 root bin f none SUNWcadap/srcfiles/file6=/home/jane/SUNWcadap/srcfiles/file6 0555 root bin d none SUNWcadap/lib=/home/jane/SUNWcadap/lib 0755 root bin f none SUNWcadap/lib/file2=/home/jane/SUNWcadap/lib/file2 0644 root bin d none SUNWcadap/man=/home/jane/SUNWcadap/man 0755 bin bin f none SUNWcadap/man/windex=/home/jane/SUNWcadap/man/windex 0644 root other d none SUNWcadap/man/man1=/home/jane/SUNWcadap/man/man1 0755 bin bin f none SUNWcadap/man/man1/file4.1=/home/jane/SUNWcadap/man/man1/file4.1 0444 bin bin f none SUNWcadap/man/man1/file3.1=/home/jane/SUNWcadap/man/man1/file3.1 0444 bin bin |