Для сборки пакета используйте команду pkgmk. Команда pkgmk выполняет следующие задачи:
Переводит все объекты, определенные в файле prototype, в формат каталога.
Создает устанавливаемый пакет, который используется в качестве входных данных команды pkgadd.
Простейшей формой этой команды является выполнение команды pkgmk без каких-либо параметров. Перед использованием команды pkgmk без параметров убедитесь, что в текущем рабочем каталоге содержится файл prototype пакета. Результат выполнения команды, файлы и каталоги записываются в каталог /var/spool/pkg.
При сборке пакета с помощью команды pkgmk она создает файл pkgmap, который заменяет файл prototype. Файл pkgmap из предыдущего примера имеет следующее содержимое:
$ more pkgmap : 1 3170 1 d none SUNWcadap 0755 root sys 1 d none SUNWcadap/demo 0755 root bin 1 f none SUNWcadap/demo/file1 0555 root bin 14868 45617 837527496 1 d none SUNWcadap/lib 0755 root bin 1 f none SUNWcadap/lib/file2 0644 root bin 1551792 62372 837527499 1 d none SUNWcadap/man 0755 bin bin 1 d none SUNWcadap/man/man1 0755 bin bin 1 f none SUNWcadap/man/man1/file3.1 0444 bin bin 3700 42989 837527500 1 f none SUNWcadap/man/man1/file4.1 0444 bin bin 1338 44010 837527499 1 f none SUNWcadap/man/windex 0644 root other 157 13275 837527499 1 d none SUNWcadap/srcfiles 0755 root bin 1 f none SUNWcadap/srcfiles/file5 0555 root bin 12208 20280 837527497 1 f none SUNWcadap/srcfiles/file6 0555 root bin 12256 63236 837527497 1 i pkginfo 140 10941 837531104 $ |
Формат этого файла очень схож с форматом файла prototype. Однако файл pkgmap содержит следующую информацию:
В первой строке указывается количество томов, на которых расположен пакет, и примерный размер пакета после его установки.
Например, : 1 3170 означает, что пакет содержится на одном томе и будет занимать примерно 3170 512-байтовых блоков после установки.
Имеются три дополнительных поля, в которых указываются размер, контрольная сумма и время изменения каждого объекта пакета.
Объекты пакета упорядочены в алфавитном порядке по классу и по имени пути, чтобы сократить время установки пакета.
Создайте файл pkginfo, если таковой отсутствует.
Поэтапные указания приведены в разделе Как создать файл pkginfo.
Создайте файл prototype, если таковой отсутствует.
Поэтапные указания приведены в разделе Создание файла prototype с помощью команды pkgproto.
Сделайте каталог, содержащий файл prototype, текущим рабочим каталогом.
Выполните сборку пакета.
$ pkgmk [-o] [-a arch] [-b base-src-dir] [-d device] [-f filename] [-l limit] [-p pstamp] [-r rootpath] [-v version] [PARAM=value] [pkginst] |
Перезаписывает текущую версию пакета.
Отменяет информацию об архитектуре, содержащуюся в файле pkginfo.
Запрашивает добавление параметра base-src-dir к началу перемещаемых имен путей, когда команда pkgmk осуществляет поиск объектов в системе разработчика.
Указывает, что пакет должен быть скопирован на устройство device. В качестве устройства может выступать абсолютное имя пути каталога, дискета или съемный диск.
Называет файл filename, который используется в качестве файла prototype. Имена по умолчанию - prototype или Prototype.
Определяет максимальный размер устройства вывода в 512-байтных блоках.
Отменяет определение производственной маркировки в файле pkginfo.
Требует, чтобы для обнаружения объектов в системе разработчика использовался корневой каталог rootpath.
Отменяет информацию о версии, содержащуюся в файле pkginfo.
Устанавливает глобальные переменные среды. Переменные, начинающиеся со строчной буквы, вычисляются во время сборки пакета. Переменные, начинающиеся с заглавной буквы, помещаются в файл pkginfo и используются во время установки.
Ссылается на пакет по его аббревиатуре или определенному экземпляру (например, SUNWcadap.4).
Для получения дополнительной информации см. справочную страницу pkgmk(1).
Проверьте содержимое пакета.
$ pkgchk -d device-name pkg-abbrev Checking uninstalled directory format package pkg-abbrev from device-name ## Checking control scripts. ## Checking package objects. ## Checking is complete. $ |
Указывает расположение пакета. Обратите внимание, что device-name может быть как полным именем пути каталога, так и идентификатором в случае использования ленточного накопителя или съемного диска.
Указывает имя одного или нескольких пакетов (разделенных пробелами), которые следует проверить. Если этот параметр отсутствует, команда pkgchk проверяет все имеющиеся пакеты.
Команда pkgchk выводит на печать перечень проверяемых параметров пакета и выводит на экран предупреждения или сообщения об ошибках. Для получения дополнительной информации о команде pkgchk см. раздел Проверка целостности пакета.
К ошибкам следует относиться очень серьезно. Ошибка может означать, что необходимо внести изменения в сценарий. Проверьте все ошибки и продолжите работу, если не согласны с результатом выполнения команды pkgchk.
В данном примере используется файл prototype, созданный в разделе Настройка файла prototype, созданного с помощью команды pkgproto.
$ cd /home/jane/InfoFiles $ pkgmk ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system990708093144" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. $ |
Если пакет содержит перемещаемые файлы, то можно использовать параметр -b base-src-dir в команде pkgmk для указания имени пути, которое следует добавить к началу перемещаемых имен путей во время создания пакета. Этот параметр может быть полезен, если для перемещаемых файлов не использовался формат path1=path2 или командой !search не был указан путь поиска в файле prototype.
Команда выполняет сборку пакета со следующими характеристиками:
Сборка пакета осуществляется с помощью пробного файла prototype, созданного командой pkgproto. Для получения дополнительной информации см. Пример. Создание файла prototypeс помощью команды pkgproto.
Сборка пакета осуществляется без изменения полей path.
Пакет добавляет запись в файл pkginfo.
$ cd /home/jane/InfoFiles $ pkgmk -o -b /home/jane ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system960716102636" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. |
В этом примере пакет собирается в каталоге по умолчанию /var/spool/pkg с помощью параметра -o. Этот параметр перезаписывает пакет, созданный в Пример 2–2.
Если разместить информационные файлы пакета (например, pkginfo и prototype) и объекты пакета в двух разных каталогах, то можно создать пакет с помощью параметров -b base-src-dir и - r rootpath команды pkgmk. Если объекты пакета находятся в каталоге /product/pkgbin, а другие информационные файлы пакета в каталоге /product/pkgsrc, то можно использовать следующую команду для помещения пакета в каталог /var/spool/pkg:
$ pkgmk -b /product/pkgbin -r /product/pkgsrc -f /product/pkgsrc/prototype |
При желании можно использовать указанные ниже команды для достижения того же результата:
$ cd /product/pkgsrc $ pkgmk -o -b /product/pkgbin |
В данном примере команда pkgmk использует текущий рабочий каталог для поиска оставшихся частей пакета (таких, как информационные файлы prototype и pkginfo).
Для получения информации о добавлении необязательных информационных файлов и сценариев установки к пакету см. Глава 3Расширение функциональности пакета (задачи). После сборки пакета следует проверить его целостность. В Глава 4Проверка и запись пакета рассказано, как это сделать. В этой главе представлены поэтапные указания по записи проверенного пакета на распространяемый носитель.