Руководство разработчика по пакетированию приложений

Сборка пакета

Для сборки пакета используйте команду pkgmk. Команда pkgmk выполняет следующие задачи:

Использование простейшей команды pkgmk

Простейшей формой этой команды является выполнение команды pkgmk без каких-либо параметров. Перед использованием команды pkgmk без параметров убедитесь, что в текущем рабочем каталоге содержится файл prototype пакета. Результат выполнения команды, файлы и каталоги записываются в каталог /var/spool/pkg.

Файл pkgmap

При сборке пакета с помощью команды 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 содержит следующую информацию:

ProcedureКак собрать пакет

  1. Создайте файл pkginfo, если таковой отсутствует.

    Поэтапные указания приведены в разделе Как создать файл pkginfo.

  2. Создайте файл prototype, если таковой отсутствует.

    Поэтапные указания приведены в разделе Создание файла prototype с помощью команды pkgproto.

  3. Сделайте каталог, содержащий файл prototype, текущим рабочим каталогом.

  4. Выполните сборку пакета.


    $ pkgmk [-o] [-a arch] [-b base-src-dir] [-d device]
       [-f filename] [-l limit] [-p pstamp] [-r rootpath]
       [-v version] [PARAM=value] [pkginst]
    -o

    Перезаписывает текущую версию пакета.

    -a arch

    Отменяет информацию об архитектуре, содержащуюся в файле pkginfo.

    -b base-src-dir

    Запрашивает добавление параметра base-src-dir к началу перемещаемых имен путей, когда команда pkgmk осуществляет поиск объектов в системе разработчика.

    -d device

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

    -f filename

    Называет файл filename, который используется в качестве файла prototype. Имена по умолчанию - prototype или Prototype.

    -l limit

    Определяет максимальный размер устройства вывода в 512-байтных блоках.

    -p pstamp

    Отменяет определение производственной маркировки в файле pkginfo.

    -r rootpath

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

    -v version

    Отменяет информацию о версии, содержащуюся в файле pkginfo.

    PARAM=value

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

    pkginst

    Ссылается на пакет по его аббревиатуре или определенному экземпляру (например, SUNWcadap.4).

    Для получения дополнительной информации см. справочную страницу pkgmk(1).

  5. Проверьте содержимое пакета.


    $ 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.
    $
    -d device-name

    Указывает расположение пакета. Обратите внимание, что device-name может быть как полным именем пути каталога, так и идентификатором в случае использования ленточного накопителя или съемного диска.

    pkg-abbrev

    Указывает имя одного или нескольких пакетов (разделенных пробелами), которые следует проверить. Если этот параметр отсутствует, команда pkgchk проверяет все имеющиеся пакеты.

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


    Внимание – Внимание –

    К ошибкам следует относиться очень серьезно. Ошибка может означать, что необходимо внести изменения в сценарий. Проверьте все ошибки и продолжите работу, если не согласны с результатом выполнения команды pkgchk.



Пример 2–2 Сборка пакета

В данном примере используется файл 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.
$


Пример 2–3 Определение исходного каталога для перемещаемых файлов

Если пакет содержит перемещаемые файлы, то можно использовать параметр -b base-src-dir в команде pkgmk для указания имени пути, которое следует добавить к началу перемещаемых имен путей во время создания пакета. Этот параметр может быть полезен, если для перемещаемых файлов не использовался формат path1=path2 или командой !search не был указан путь поиска в файле prototype.

Команда выполняет сборку пакета со следующими характеристиками:


$ 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.



Пример 2–4 Указание других исходных каталогов для информационных файлов и объектов пакета

Если разместить информационные файлы пакета (например, 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Проверка и запись пакета рассказано, как это сделать. В этой главе представлены поэтапные указания по записи проверенного пакета на распространяемый носитель.