IPS を使用すると、既存のパッケージを、最初にそのパッケージを発行していなくても、変更を加えて再発行することが簡単にできます。また、pkg update がユーザーの期待どおりに機能し続けるように、変更済みパッケージの新しいバージョンを再発行することもできます。
パッケージを変更して再発行するには、次の手順を使用します。
pkgrecv(1) を使用して、再発行するパッケージを指定のディレクトリに raw 形式でダウンロードします。すべてのファイルにはそのハッシュ値で名前が付けられ、マニフェストには manifest という名前が付けられます。必要なプロキシ構成を http_proxy 環境変数に忘れずに設定してください。
pkgmogrify(1) を使用して、マニフェストに対して必要な変更を行います。生成されたマニフェストに必要なメタデータを追加するおよびプログラムによるパッケージマニフェストの変更を参照してください。
発行中に混乱が起きないように、内部パッケージの FMRI からタイムスタンプを削除します。
すべての署名アクションを削除します。
pkglint(1) を使用して結果となるパッケージを検証します。
pkgsend(1) を使用してパッケージを再発行します。再発行によって存在している署名がパッケージから取り除かれ、pkg.fmri によって指定されたタイムスタンプが無視されます。警告メッセージを防ぐには、pkgmogrify の手順で署名アクションを削除します。
パッケージの元のソースに発行する権限がない場合は、pkgrepo(1) を使用してリポジトリを作成したあとで、次のコマンドを使用して、パブリッシャー検索順で元のパブリッシャーの前に新しいパブリッシャーを設定します。
$ pkg set-publisher --search-before=original_publisher new_publisher
必要に応じて、pkgsign(1) を使用してパッケージに署名します。クライアントのキャッシュ問題を防ぐには、テストの場合であっても、パッケージをインストールする前にパッケージに署名します。IPS パッケージの署名を参照してください。