pkgmk コマンドを使用してパッケージを構築します。 pkgmk コマンドは、次の処理を実行します。
prototype ファイル内で定義されたすべてのオブジェクトをディレクトリ形式に入力します。
pkgadd コマンドへの入力値として使用される、インストール可能なパッケージを生成します。
pkgmk コマンドの最も簡単な形式は、オプションを指定しない場合です。オプションを指定せずに pkgmk コマンドを使用する前に、現在の作業用ディレクトリにパッケージの prototype ファイルを含める必要があります。コマンド、ファイル、およびディレクトリの出力は、/var/spool/pkg ディレクトリに書き込まれます。
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 ファイルには、次の情報が含まれます。
最初の行には、パッケージがまたがるボリューム数と、インストール時のパッケージの近似サイズが示されます。
たとえば、: 1 3170 は、パッケージが 1 つのボリュームにわたり、インストール時に約 3170 ブロック (512 バイトブロック単位) が使用されることを意味します。
各パッケージオブジェクトのサイズ、チェックサム、および変更時間を定義する、3 つの追加のフィールドがあります。
パッケージのインストールにかかる時間を削減するために、クラスおよびパス名のアルファベット順でパッケージオブジェクトが一覧表示されます。
まだ作成していない場合、pkginfo ファイルを作成します。
作成手順については、「pkginfo ファイルの作成方法」を参照してください。
まだ作成していない場合、prototype ファイルを作成します。
作成手順については、「pkgproto コマンドを使用して prototype ファイルを作成する方法」を参照してください。
現在の作業用ディレクトリを、パッケージの 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 ファイル内のアーキテクチャー情報を上書きします。
pkgmk コマンドが開発システム上のオブジェクトを検索するときに base-src-dir が再配置可能なパス名の先頭に追加されるように要求します。
device (絶対ディレクトリパス名、フロッピーディスク、またはリムーバブルディスクの場合がある) にパッケージがコピーされるように指定します。
prototype ファイルとして使用されるファイル filename を指定します。デフォルト名は、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 には、完全なディレクトリ パス、またはテープやリムーバルディスクの識別子を指定できます。
チェックされる、1 つ以上の (空白で区切られた) パッケージの名前です。やこの引数を省略すると、pkgchk コマンドにより、使用可能なすべてのパッケージがチェックされます。
pkgchk コマンドは、必要に応じて、パッケージのチェックされる内容を印刷し、警告やエラーを表示します。pkgchk コマンドについては、「パッケージの整合性の確認」を参照してください。
エラーについては、真剣に検討するようにしてください。エラーがある場合、スクリプトの修正が必要な可能性があります。pkgchk コマンドの出力が好ましくない場合、すべてのエラーをチェックしてから先に進んでください。
次の例では、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. $ |
パッケージに再配置可能ファイルが含まれる場合、pkgmk コマンドの -b base-src-dir オプションを使用して、パッケージの作成時に再配置可能なパス名の先頭に追加するパス名を指定します。このオプションは、再配置可能ファイルに対して path1=path2 形式を使用していない場合や、prototype ファイル内で !search コマンドを使用して検索パスを指定していない場合に便利です。
次のコマンドでは、次に示す特性によってパッケージを構築します。
パッケージは、pkgproto コマンドで作成される prototype ファイルのサンプルによって構築されます。詳細については、「例—pkgproto コマンドを使用した prototype ファイルの作成」を参照してください。
パッケージは、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. |
この例では、-o オプションを指定して、デフォルトのディレクトリ /var/spool/pkg にパッケージが構築されます。このオプションにより、例 2–2 で作成されたパッケージが上書きされます。
パッケージ情報ファイル (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 章パッケージの確認と転送では、パッケージの確認方法について説明し、確認済みのパッケージを配布媒体に転送する方法について順を追って説明します。