アプリケーションパッケージ開発者ガイド

パッケージの構築

pkgmk コマンドを使用してパッケージを構築します。 pkgmk コマンドは、次の処理を実行します。

最も簡単な pkgmk コマンドの使用

pkgmk コマンドの最も簡単な形式は、オプションを指定しない場合です。オプションを指定せずに pkgmk コマンドを使用する前に、現在の作業用ディレクトリにパッケージの prototype ファイルを含める必要があります。コマンド、ファイル、およびディレクトリの出力は、/var/spool/pkg ディレクトリに書き込まれます。

pkgmap ファイル

pkgmk コマンドでパッケージを構築する場合、prototype ファイルに置き換える pkgmap ファイルがコマンドによって作成されます。前の例で使用した 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 ファイルを作成します。

    作成手順については、pkgproto コマンドを使用して prototype ファイルを作成する方法」を参照してください。

  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

    pkgmk コマンドが開発システム上のオブジェクトを検索するときに base-src-dir が再配置可能なパス名の先頭に追加されるように要求します。

    -d device

    device (絶対ディレクトリパス名、フロッピーディスク、またはリムーバブルディスクの場合がある) にパッケージがコピーされるように指定します。

    -f filename

    prototype ファイルとして使用されるファイル filename を指定します。デフォルト名は、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

    チェックされる、1 つ以上の (空白で区切られた) パッケージの名前です。やこの引数を省略すると、pkgchk コマンドにより、使用可能なすべてのパッケージがチェックされます。

    pkgchk コマンドは、必要に応じて、パッケージのチェックされる内容を印刷し、警告やエラーを表示します。pkgchk コマンドについては、「パッケージの整合性の確認」を参照してください。


    注意 – 注意 –

    エラーについては、真剣に検討するようにしてください。エラーがある場合、スクリプトの修正が必要な可能性があります。pkgchk コマンドの出力が好ましくない場合、すべてのエラーをチェックしてから先に進んでください。



例 2–2 パッケージの構築

次の例では、Fine-Tuning a prototype File Created With the pkgproto Commandで作成した pkgproto コマンドで作成した prototype ファイルの微調整」 ファイルを使用します。


$ 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 再配置可能ファイルのソースディレクトリの指定

パッケージに再配置可能ファイルが含まれる場合、pkgmk コマンドの -b base-src-dir オプションを使用して、パッケージの作成時に再配置可能なパス名の先頭に追加するパス名を指定します。このオプションは、再配置可能ファイルに対して path1=path2 形式を使用していない場合や、prototype ファイル内で !search コマンドを使用して検索パスを指定していない場合に便利です。

次のコマンドでは、次に示す特性によってパッケージを構築します。


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

この例では、-o オプションを指定して、デフォルトのディレクトリ /var/spool/pkg にパッケージが構築されます。このオプションにより、例 2–2 で作成されたパッケージが上書きされます。



例 2–4 情報ファイルとパッケージオブジェクトへの異なるソースディレクトリの指定

パッケージ情報ファイル (pkginfo および prototype) とパッケージオブジェクトを 2 つの異なるディレクトリに配置する場合、pkgmk コマンドの -b base-src-dir オプションと - r rootpath オプションを使用してパッケージを作成できます。パッケージオブジェクトが /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 章パッケージの確認と転送では、パッケージの確認方法について説明し、確認済みのパッケージを配布媒体に転送する方法について順を追って説明します。