発行前の最後の手順は、マニフェストに対して pkglint(1) を実行して、発行およびテスト前に特定できるエラーを見つけることです。pkglint で見つけられるエラーの中には、発行時またはユーザーがパッケージのインストールを試みたときに見つかるものもありますが、当然ながらパッケージオーサリングプロセスでできるだけ早くエラーを特定するのが望ましいことです。
pkglint で報告されるエラーの例には次があります。
配布するファイルがすでに別のパッケージで所有されている。
ディレクトリのような、共有された参照カウントアクションのメタデータに違いがある。このエラーの例については、パッケージマニフェストを生成するの終わりで説明されています。
pkglint が実行するチェックの完全なリストを表示するには、pkglint -L コマンドを使用します。特定のチェックを有効化、無効化、および省略する方法の詳細な情報は、pkglint(1) のマニュアルページに記載されています。このマニュアルページには、追加のチェックを実行するために pkglint を拡張する方法も詳述されています。
pkglint は次のいずれかのモードで実行できます。
パッケージマニフェストに対して直接。通常、マニフェストの有効性をすばやくチェックするためには、このモードで十分です。
パッケージマニフェストに対して (パッケージリポジトリも参照)。このモードは、リポジトリへの発行前に少なくとも 1 回は使用してください。
リポジトリを参照することで、pkglint は追加のチェックを行なって、パッケージがそのリポジトリ内のほかのパッケージとうまく相互作用することを確認できます。
次の出力には、サンプルマニフェストの問題が示されています。
$ pkglint mypkg.p5m.4.res Lint engine setup... Starting lint run... WARNING pkglint.action005.1 obsolete dependency check skipped: unable to find dependency pkg:/system/library@0.5.11-0.175.2.0.0.18.0 for pkg:/mypkg@1.0,5.11-0
この警告はこの例で許容されます。pkglint.action005.1 警告は、pkglint が、このサンプルパッケージが依存している pkg:/system/library@0.5.11-0.175.2.0.0.18.0 と呼ばれるパッケージを見つけられなかったことを伝えています。この依存関係パッケージはパッケージリポジトリ内にあり、pkglint が引数にマニフェストファイルのみを指定して呼び出されたため、見つかりませんでした。
次のコマンドでは、-r オプションによって依存関係パッケージを含むリポジトリが参照されます。-c オプションは、lint リポジトリおよび参照リポジトリからパッケージのメタデータをキャッシュするために使用されるローカルディレクトリを指定します。
$ pkglint -c ./solaris-reference -r http://pkg.oracle.com/solaris/release mypkg.p5m.4.res