Oracle® Solaris 11.2 での Image Packaging System を使用したソフトウェアのパッケージ化と配布

印刷ビューの終了

更新: 2014 年 7 月
 
 

パッケージを配布する

IPS には、ユーザーがパッケージをインストールできるようにする 3 通りのパッケージ配布方法があります。

ローカルファイルベースのリポジトリ

ユーザーはローカルネットワーク経由でこのリポジトリにアクセスします。パブリッシャーの起点はリポジトリのパス (/net/host1/export/ipsrepo など) です。

リモート HTTP ベースのリポジトリ

ユーザーは 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

この出力は、ある特定のリポジトリから最新バージョンのすべてのパッケージでアーカイブを作成するためのスクリプトの構築に役立つことがあります。