IPS には、ユーザーがパッケージをインストールできるようにする 3 通りのパッケージ配布方法があります。
ユーザーはローカルネットワーク経由でこのリポジトリにアクセスします。パブリッシャーの起点はリポジトリのパス (/net/host1/export/ipsrepo など) です。
ユーザーは HTTP または HTTPS 経由でこのリポジトリにアクセスします。パブリッシャーの起点は http://pkg.example.com/ などのアドレスです。
パッケージアーカイブはスタンドアロンファイルです。パブリッシャーの起点はアーカイブファイルのパス (/net/host1/export/ipsarchive.p5p など) です。
どの場合でも、パッケージは パッケージを発行するで説明するように pkgsend publish コマンドを使用してすでに発行されています。一般的な用途のために既存のリポジトリまたはパッケージアーカイブにパッケージを取得するには、pkgrecv コマンドを使用します。詳細は、pkgrecv(1) のマニュアルページを参照してください。一般的な使用のためにリポジトリを作成および保持する方法については、Oracle Solaris 11.2 パッケージリポジトリのコピーと作成 を参照してください。
次の例は、一般的な使用の目的でセットアップされたローカルファイルリポジトリに、テストリポジトリから新しいパッケージを配布する方法を示します。この例のパッケージは小さいため、get と send のサイズはゼロです。
$ pkgrecv -s my-repository -d /net/host1/export/ipsrepo mypkg Processing packages for publisher mypublisher ... Retrieving and evaluating 1 package(s)... PROCESS ITEMS GET (MB) SEND (MB) Completed 1/1 0.0/0.0 0.0/0.0
新しいリポジトリにパッケージが存在することを確認します。
$ pkgrepo info -s /net/host1/export/ipsrepo PUBLISHER PACKAGES STATUS UPDATED solaris 4455 online 2013-07-09T23:41:24.312974Z mypublisher 1 online 2013-07-22T20:57:36.951042Z $ pkgrepo list -p mypublisher -s /net/host1/export/ipsrepo PUBLISHER NAME 0 VERSION mypublisher mypkg 1.0,5.11-0:20130720T005452Z
同じ pkgrecv コマンドを使用して、HTTP または HTTPS リポジトリにパッケージを配布します。この場合、-d 引数として、適切な pkg/server サービスインスタンスの pkg/inst_root プロパティーの値を指定します。このリポジトリは、pkg.depotd を実行する svc:/application/pkg/server サービスによりユーザーに提供されます。詳細は、pkg.depotd(1M) のマニュアルページを参照してください。
このイメージに子イメージ (非大域ゾーン) がない場合、次のコマンドに示すように、ユーザーは -g オプションを使用して新しいパッケージをインストールできます。-g オプションは、このイメージで構成されているパブリッシャーの一覧に mypublisher パブリッシャーを追加します。
$ pkg install -g /net/host1/export/ipsrepo mypkg
このイメージに子イメージが含まれている場合、次のコマンドに示すように、ユーザーはイメージ内で mypublisher パブリッシャーを構成する必要があります。
$ pkg set-publisher -p /net/host1/export/ipsrepo
パッケージアーカイブは、パブリッシャー情報と、そのパブリッシャーから提供される 1 つまたは複数のパッケージが含まれているスタンドアロンファイルです。パッケージをパッケージアーカイブとして配布する方法は、パッケージリポジトリにアクセスできないユーザーにとって便利です。パッケージアーカイブは、Web サイトからのダウンロード、USB キーへのコピー、DVD への書き込みが容易にできます。
pkgrecv コマンドでは、パッケージリポジトリからパッケージアーカイブにパッケージを追加したり、パッケージアーカイブからパッケージリポジトリにパッケージを追加したりすることができます。パッケージアーカイブからパッケージリポジトリにパッケージを追加する場合は、パッケージアーカイブにはデフォルトのパブリッシャー接頭辞などのリポジトリ構成が含まれていない点に注意してください。ほとんどの pkgrepo サブコマンドは、パッケージアーカイブでは動作しません。pkgrepo list コマンドはパッケージアーカイブで動作します。
次のコマンドは、mypkg パッケージのパッケージアーカイブを作成します。このアーカイブはまだ存在しないため、-a オプションを指定する必要があります。慣例的に、パッケージアーカイブにはファイル拡張子 .p5p が付きます。
$ pkgrecv -s my-repository -a -d myarchive.p5p mypkg Retrieving packages for publisher mypublisher ... Retrieving and evaluating 1 package(s)... DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 1/1 3/3 0.0/0.0 782k/s ARCHIVE FILES STORE (MB) myarchive.p5p 14/14 0.0/0.0
このイメージに子イメージ (非大域ゾーン) がない場合、次のコマンドに示すように、ユーザーは -g オプションを使用して新しいパッケージをインストールできます。-g オプションは、このイメージで構成されているパブリッシャーの一覧に mypublisher パブリッシャーを追加します。
$ pkg install -g myarchive.p5p mypkg
このイメージに子イメージが含まれている場合、次のコマンドに示すように、ユーザーはイメージ内で mypublisher パブリッシャーを構成する必要があります。
$ pkg set-publisher -p myarchive.p5p
パッケージアーカイブを、非大域ゾーンのローカルパブリッシャーのソースとして設定できます。
pkgrepo コマンドを使用して、リポジトリまたはアーカイブから使用可能な最新のパッケージを一覧表示します。
$ pkgrepo list -s my-repository '*@latest' PUBLISHER NAME O VERSION mypublisher mypkg 1.0,5.11-0:20130720T005452Z $ pkgrepo list -s myarchive.p5p '*@latest' PUBLISHER NAME O VERSION mypublisher mypkg 1.0,5.11-0:20130720T005452Z
この出力は、ある特定のリポジトリから最新バージョンのすべてのパッケージでアーカイブを作成するためのスクリプトの構築に役立つことがあります。