もう 1 つの一般的な使用事例は、新しいパブリッシャー名でパッケージを再発行することです。これが有効な場合の事例として、複数のリポジトリからのパッケージを 1 つのリポジトリに統合することがあげられます。たとえば、統合テストのために、いくつかの異なる開発チームのリポジトリからのパッケージを 1 つのリポジトリに統合することが必要な場合があります。
新しいパブリッシャー名で再発行するには、前の例に示した pkgrecv、pkgmogrify、pkgrepo、および pkgsend の手順を使用します。
次の変換の例では、パブリッシャーを mypublisher に変更します。
<transform set name=pkg.fmri -> edit value pkg://[^/]+/ pkg://mypublisher/>
単純なシェルスクリプトを使用すれば、リポジトリ内のパッケージ全体にわたって繰り返すことができます。リポジトリからの最新のパッケージのみを処理するには、pkgrecv --newest からの出力を使用します。
次のスクリプトでは、上記の変換を change-pub.mog というファイルに保存し、そのあとで development-repo から新しいリポジトリ new-repo に再発行し、その途中でパッケージのパブリッシャーを変更します。
#!/usr/bin/ksh93 pkgrepo create new-repo pkgrepo -s new-repo set publisher/prefix=mypublisher mkdir incoming for package in $(pkgrecv -s ./development-repo --newest); do pkgrecv -s development-repo -d incoming --raw $package done for pdir in incoming/*/* ; do pkgmogrify $pdir/manifest change-pub.mog > $pdir/manifest.newpub pkgsend -s new-repo publish -d $pdir $pdir/manifest.newpub done
このスクリプトは、特定のパッケージのみを選択する、パッケージのバージョン管理スキームに追加の変更を加える、各パッケージを再発行するときの進捗を示す、などのタスクを実行するように変更できます。