イメージ内のパッケージのインストールを検証するには、pkg verify コマンドを使用します。関連するパブリッシャーの現在の署名ポリシーが ignore でない場合、各パッケージの署名がポリシーに基づいて検証されます。署名ポリシーが適用されるしくみについては、署名付きパッケージのイメージプロパティーを参照してください。インストール済みパッケージの内容は、独自の内容解析に基づいて検証されるため、ほかのプログラムの場合とは異なる結果が返されることがあります。
パッケージ名を指定しない場合、すべてのインストール済みパッケージが検査されます。-v オプションは、インストール済みパッケージごとに少なくとも 1 行の情報メッセージを提供します。次の例には、出力の少量のサンプルのみが表示されています。pkg/depot パッケージのインストールにエラーがあります。
$ pkg verify -v PACKAGE STATUS pkg://solaris/archiver/gnu-tar OK pkg://solaris/audio/audio-utilities OK pkg://solaris/benchmark/x11perf OK ... pkg://solaris/package/pkg/depot ERROR dir: var/cache/pkg/depot Group: 'pkg5srv (97)' should be 'bin (2)' file: var/log/pkg/depot/access_log editable file has been changed file: var/log/pkg/depot/error_log editable file has been changed ... pkg://solaris/security/sudo OK file: etc/sudoers editable file has been changed ... pkg://solaris/x11/xlock OK pkg://solaris/x11/xmag OK pkg://solaris/x11/xvidtune OK
pkg verify コマンドで報告されたパッケージエラーを修正するには、pkg fix コマンドを使用します。
pkg verify の出力には、インストールされた sudo パッケージのコンポーネントはパッケージされたコンポーネントと異なるということが表示されますが、これらの相違点は検証エラーとして報告されません。pkg fix は変更を行いません。/etc/sudoers ファイルは置換されません。
$ pkg fix pkg://solaris/security/sudo No repairs for this image.
/etc/sudoers ファイルを削除すると、検証は失敗し、pkg fix によってファイルが置換されます。
$ pkg fix pkg://solaris/security/sudo Verifying: pkg://solaris/security/sudo ERROR file: etc/sudoers Missing: regular file does not exist Created ZFS snapshot: 2014-03-13-22:05:42 Repairing: pkg://solaris/security/sudo Creating Plan (Evaluating mediators): DOWNLOAD PKGS FILES XFER (MB) SPEED Completed 1/1 1/1 0.0/0.0 990B/s PHASE ITEMS Updating modified actions 1/1 Updating package state database Done Updating package cache 0/0 Updating image state Done Creating fast lookup database Done
1 つのファイルをダウンロードし、1 つのアクション (file アクション) を変更したという記述が示すように、欠落したファイルのみが置換されます。その他の sudo パッケージ内容は影響を受けていません。修復を実行する前に、操作によって現在のインストールのスナップショットが保存されています。pkg fix 出力の「Created ZFS snapshot」の行を参照してください。修復は現在のイメージ内で実行されました。
$ zfs list -r rpool/ROOT/s11 NAME USED AVAIL REFER MOUNTPOINT rpool/ROOT/s11 16.3G 22.5G 26.1G / rpool/ROOT/s11@2014-03-13-23:52:19 249M - 26.1G -
pkg verify の出力は、インストールされている pkg/depot パッケージ内のディレクトリの所有権にエラーがあることを示しています。pkg fix の出力は、「Verifying」セクションにのみエラーを表示しています。パッケージ化されたコンポーネントとのほかの相違点は表示されません。
$ ls -ld /var/cache/pkg/depot drwxr-xr-x 3 pkg5srv pkg5srv 3 Dec 2 19:47 /var/cache/pkg/depot/ $ pkg fix pkg://solaris/package/pkg/depot Verifying: pkg://solaris/package/pkg/depot ERROR dir: var/cache/pkg/depot Group: 'pkg5srv (97)' should be 'bin (2)' Created ZFS snapshot: 2014-03-13-22:18:52 Repairing: pkg://solaris/package/pkg/depot Creating Plan (Evaluating mediators): PHASE ITEMS Updating modified actions 1/1 Updating package state database Done Updating package cache 0/0 Updating image state Done Creating fast lookup database Done
次の出力は、エラーのみが修正されたことを示します。インストールされたコンポーネントとパッケージ化されたコンポーネントのその他の相違点は、そのまま残っています。
$ ls -ld /var/cache/pkg/depot drwxr-xr-x 3 pkg5srv bin 3 Dec 2 19:47 /var/cache/pkg/depot/ $ pkg verify -v pkg://solaris/package/pkg/depot PACKAGE STATUS pkg://solaris/package/pkg/depot OK file: var/log/pkg/depot/access_log editable file has been changed file: var/log/pkg/depot/error_log editable file has been changed