更新するリポジトリの最新のスナップショットがあることを確認します。
$ zfs list -rt all rpool/VARSHARE/pkgrepos/solaris NAME USED AVAIL REFER MOUNTPOINT rpool/VARSHARE/pkgrepos/solaris 17.6G 78.4G 34K /var/share/pkgrepos/solaris rpool/VARSHARE/pkgrepos/solaris@initial 0 - 17.6G -
リポジトリのスナップショットがすでにある場合は、zfs diff コマンドを使用して、そのスナップショットがリポジトリデータセットと同じであるかどうかを確認します。
$ zfs diff rpool/VARSHARE/pkgrepos/solaris@initial $
zfs diff コマンドで出力が生成されない場合、そのスナップショットは親データセットと同じであり、そのスナップショットを更新に使用できます。
zfs diff コマンドの出力があった場合、またはリポジトリのスナップショットがない場合は、インターネットからリポジトリを明示的にコピーする方法のStep 6 に示すように、新しいスナップショットを作成します。この新しいスナップショットを更新に使用します。
リポジトリのスナップショットをクローニングして、更新可能なリポジトリのコピーを作成します。
$ zfs clone rpool/VARSHARE/pkgrepos/solaris@initial rpool/VARSHARE/pkgrepos/solaris_tmp $ zfs list -rt all rpool/VARSHARE/pkgrepos NAME USED AVAIL REFER MOUNTPOINT rpool/VARSHARE/pkgrepos 17.6G 78.4G 34K /var/share/pkgrepos rpool/VARSHARE/pkgrepos/solaris 17.6G 78.4G 17.6G /var/share/pkgrepos/solaris rpool/VARSHARE/pkgrepos/solaris@initial 0 - 17.6G - rpool/VARSHARE/pkgrepos/solaris_tmp 76K 78.4G 17.6G /var/share/pkgrepos/solaris_tmp
ファイルまたは HTTP の場所から元のリポジトリを作成したように、ファイルまたは HTTP の場所からリポジトリを更新できます。
使用例 1の説明に従って、-I オプションを使用して、リポジトリの .zip ファイルから .iso ファイルを作成します。
$ mount -F hsfs ./sol-11_3-incr-repo.iso /mnt
iso ファイルからリポジトリをコピーする方法に示す rsync または tar のどちらかを使用します。
$ rsync -aP /mnt/repo/ /var/share/pkgrepos/solaris_tmp
別のリポジトリの内容をリポジトリクローンにコピーします。セキュアなサイトからコピーする場合は、必要な SSL 証明書および鍵がインストールされていることを確認し、必要な証明書および鍵のオプションを指定します。
$ pkgrecv -s https://pkg.oracle.com/solaris/support \ -d /var/share/pkgrepos/solaris_tmp \ --key /path-to/key-file --cert /path-to/certificate-file '*'
pkgrecv コマンドの詳細は、pkgrecv(1) のマニュアルページを参照してください。変更されたパッケージのみが更新されるため、リポジトリを更新する時間は、元のリポジトリを取り込むためにかかる時間より大幅に短くなることがあります。リポジトリのコピーのパフォーマンスに関する考慮事項のパフォーマンスのヒントを参照してください。
pkgrecv 操作が中断された場合は、中断されたパッケージの受信の再開の手順に従います。
pkgrepo verify コマンドを使用して、更新済みのリポジトリを検証します。pkgrepo verify および pkgrepo fix コマンドの詳細は、pkgrepo(1) のマニュアルページを参照してください。
新しく更新されたリポジトリで見つかった新しいパッケージをすべてカタログ化し、すべての検索インデックスを更新します。
$ pkgrepo refresh -s /var/share/pkgrepos/solaris_tmp
$ zfs snapshot rpool/VARSHARE/pkgrepos/solaris_tmp@S11U2SRU1
$ svcadm disable -st pkg/server:solaris $ zfs promote rpool/VARSHARE/pkgrepos/solaris_tmp $ zfs rename rpool/VARSHARE/pkgrepos/solaris rpool/VARSHARE/pkgrepos/solaris_old $ zfs rename rpool/VARSHARE/pkgrepos/solaris_tmp rpool/VARSHARE/pkgrepos/solaris
svcadm コマンドの詳細は、svcadm(1M) のマニュアルページを参照してください。
HTTP インタフェースを介してリポジトリを提供する場合は、SMF サービスを再起動します。サービスを再起動するときは、適切なサービスインスタンスを指定してください。
$ svcadm restart pkg/server:solaris
更新されたリポジトリが正しく動作していることを確認したら、古いリポジトリを削除できます。
$ zfs destroy rpool/VARSHARE/pkgrepos/solaris_old