Oracle® Solaris 11.2 ソフトウェアの追加と更新

印刷ビューの終了

更新: 2014 年 7 月
 
 

パッケージのインストールおよび更新のトラブルシューティング

この付録では、パッケージをインストールまたは更新する際に見られることがある一部のエラーを処理する方法を示します。この付録では、パフォーマンスを向上し、格納されるメタデータを最小化するためのヒントも示します。

トラブルシューティングの初期手順

インストールするパッケージが構成済みのパブリッシャーから入手可能で、このイメージにインストールできるかどうかを確認します。インストール済みバージョンの pkg:/entire と、このイメージに構成されたパブリッシャーの起点の情報が必要です。pkg:/entire パッケージの更新が必要な場合もあります。パブリッシャーの起点の変更が必要な場合もあります。

パッケージのインストールにおけるほとんどすべての問題について、次の 2 つの確認を最初に行う必要があります。

  • インストールされている pkg:/entire incorporation パッケージのバージョンを確認します。

  • パッケージパブリッシャーの起点を確認します。

必要なパッケージが構成済みのパブリッシャーから入手可能であることが判別できたら、インストールの進捗に応じて次のステップを使用します。

  • インストールまたは更新を行うときは常に -nv オプションを使用して、行われる変更内容 (どのパッケージのどのバージョンがインストールまたは更新されるのかや、新しい BE が作成されるかどうかなど) を確認してください。-v オプションは、この特定のインストールまたは更新操作に適用されるリリースノートも示します。

  • さらに詳細なエラーメッセージを受け取るには、インストールするパッケージの FMRI を、バージョンおよびパブリッシャーも含めて詳しく指定します。

pkg:/entire のインストール済みバージョンの確認

現在インストールされている pkg:/entire incorporation パッケージのバージョンを確認するには、pkg list コマンドを使用します。

$ pkg list entire
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.2.0.0.34.0    i--
$ pkg list -Hv entire
pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.34.0:20140303T182643Z           i--

pkg:/entire incorporation パッケージは、使用中のサポート可能なイメージを容易に維持できるようにするために、ほかの多くのパッケージのバージョンを制約します。incorporation パッケージによって制約されるパッケージの詳細は、incorporation パッケージを参照してください。

pkg:/entire incorporation パッケージによって制約されているパッケージを直接インストールまたは更新することはできません。pkg:/entire によって制約されているパッケージをインストールまたは更新するには、pkg:/entire パッケージを更新する必要があります。詳細は、制約を満たすことができないを参照してください。場合によっては、incorporation によって制約されたパッケージの更新に示すように制約を削除できます。

構成済みのパブリッシャーの起点についての内容の確認

パッケージパブリッシャーの起点を確認するには、pkg publisher コマンドを使用します。

$ pkg publisher
PUBLISHER  TYPE    STATUS P LOCATION
solaris    origin  online F http://pkg.oracle.com/solaris/release/

セキュアな URI の場合、必要な鍵および証明書が正しくインストールされていることを確認し、パブリッシャーを構成するときに -k および -c オプションを使用します。

外部の場所へのプロキシがサイトで必要な場合、pkg set-publisher コマンドの --proxy オプションを使用して、そのプロキシを設定します。手順については、プロキシの指定を参照してください。

鍵、証明書、プロキシなどのパブリッシャーに関する詳細な情報を表示するには、pkg publisher publisher コマンドを使用します。

有効化されたパブリッシャーのいずれかの起点 URI にアクセスできない場合、必要な場所がアクセス可能であったとしても、インストールまたは更新操作は失敗します。場所にアクセスできない原因となっている問題を修復できない場合、pkg set-publisher -G を使用してアクセスできない起点を削除するか、pkg set-publisher --disable を使用して、そのパブリッシャーを無効にすることができます。このパブリッシャーが不要になった場合、pkg unset-publisher を使用してパブリッシャーを削除します。

パッケージパブリッシャーの起点に、必要なパッケージが含まれていることを確認します。たとえば、solaris パブリッシャーの起点が公開リリースリポジトリに設定されている場合、サポートリポジトリからのみ利用可能なバージョンにパッケージを更新することはできません。

必須のインストール済みパッケージが使用可能かどうかの確認

インストール済みのパッケージを更新したり、インストール済みパッケージに依存するパッケージをインストールしたり、または非大域ゾーンをインストールしたりするには、パブリッシャーの起点として設定しているリポジトリが、イメージに現在インストールされているものと同じソフトウェアを最低限含んでいる必要があります。リポジトリには古いソフトウェアまたは新しいソフトウェアを含めることもできますが、イメージにインストールされているものと同じソフトウェアを含む必要があります。

インストール済みパッケージを確認するときは、pkgrepo list コマンドを使用し、pkg list コマンドを使用しないでください。pkg list コマンドは、インストール済みパッケージが構成済みのパブリッシャーの起点から使用可能でない場合でも、パッケージを常に表示します。

次のコマンドは、pkg:/entire のインストール済みバージョンがパブリッシャーの起点から使用できないため、指定されたリポジトリはこのイメージについて適切なパブリッシャーの起点ではないことを示しています。

$ pkg list entire
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.2.0.0.34.0    i--
$ pkg publisher
PUBLISHER  TYPE    STATUS P LOCATION
solaris    origin  online F http://pkg.oracle.com/solaris/release/
$ pkgrepo list -Hs http://pkg.oracle.com/solaris/release entire@0.5.11-0.175.2.0.0.34.0
pkgrepo list: The following pattern(s) did not match any packages:
        entire@0.5.11-0.175.2.0.0.34.0

必要なパッケージが一覧表示されない場合、pkgrepo refresh コマンドをふたたび実行して、pkgrepo list コマンドを再試行してください。

次のコマンドは、pkg:/entire のインストール済みバージョンが、指定されたリポジトリから使用できることを示しています。

$ pkgrepo list -Hs /export/IPSpkgrepos/Solaris entire@0.5.11-0.175.2.0.0.34.0
solaris   entire                   0.5.11,5.11-0.175.2.0.0.34.0:20140303T182643Z

必要なパッケージが構成済みのパブリッシャーから使用できないが、別のリポジトリの起点から使用できる場合、次のいずれかのアクションを実行します。

  • solaris パブリッシャーについてこの起点を追加するには、pkg set-publisher コマンドの -g オプションを使用します。

  • solaris パブリッシャーについての起点を変更するには、pkg set-publisher コマンドの -g および -G オプションを使用します。

  • 必要なパッケージが別のパブリッシャーから提供される場合、pkg set-publisher コマンドを使用して、そのパブリッシャーを追加します。

  • 検索するリポジトリのリストの最後にリポジトリを一時的に追加するには、インストールコマンド (installuninstallupdatechange-variant、および change-facet) の -g オプションを使用します。

インストールするパッケージが使用可能かどうかの確認

インストールするパッケージが構成済みのパブリッシャーから入手可能かどうかを確認するには、次のコマンドを使用します。パッケージを更新する場合、現在インストールされているパッケージのバージョンと、更新後のバージョンの両方が使用可能である必要があります。

$ pkg list -af package

必要なパッケージが一覧表示されない場合、pkg refresh コマンドをふたたび実行して、pkg list コマンドを再試行してください。

引き続き必要なパッケージがリストされていない場合は、新しいパブリッシャーまたは新しいパブリッシャー起点を追加します。

インストールするパッケージがこのイメージにインストール可能かどうかの確認

-af オプションを使用したときに、必要なパッケージバージョンが一覧表示された場合、-f オプションを使用せずに同じコマンドをふたたび使用します。

$ pkg list -a package

必要なバージョンが依然として一覧表示される場合、このパッケージは制約を受けておらず、ほかのパッケージをインストールまたは更新しなくても、このパッケージをインストールできるはずです。

必要なバージョンが一覧表示されない場合、このバージョンは構成済みパブリッシャーから使用できますが、このイメージにインストール可能ではありません。パッケージがインストールできない理由として、次のことが考えられます。

  • パッケージがバリアントまたはファセットの設定によって制約されている。

  • パッケージのバージョンが、incorporation パッケージによって制約されている。制約するパッケージを更新したり、場合によっては制約を緩和したりできます。詳細は、制約を満たすことができないを参照してください。

  • パッケージのバージョンが、凍結操作によって制約されている。pkg freeze コマンドを実行します。インストールする異なるバージョンのパッケージに対して require 依存関係を持つパッケージに凍結が適用されている可能性があり、両方のバージョンを同時にインストールすることはできません。

インストールの再試行

インストールまたは更新するパッケージを指定し、パブリッシャーを指定しない場合、パッケージ FMRI またはパターンに一致するパッケージを提供する、パブリッシャーの検索順序で最初のパブリッシャーがインストールソースとして使用されます。該当するパブリッシャーがこのイメージ内にインストール可能なパッケージのバージョンを提供しない場合、使用可能な別のパブリッシャーがこのイメージ内にインストール可能なパッケージのバージョンを提供したとしても、インストール操作は失敗します。この問題に対処するには次のいずれかのアクションを実行します。

  • パッケージ FMRI でパブリッシャーを指定します。たとえば、フルパッケージ名の前に pkg://solaris/ を指定します。

  • 必要なパッケージバージョンを提供するパブリッシャーを検索順序の最初のパブリッシャーに設定するには、pkg set-publisher コマンドの -P オプションを使用します。

インストールまたは更新を行うときは常に -nv オプションを使用して、行われる変更内容 (どのパッケージのどのバージョンがインストールまたは更新されるのかや、新しい BE が作成されるかどうかなど) を確認してください。-v オプションは、この特定のインストールまたは更新操作に適用されるリリースノートも示します。

  • -nv オプションを使用してもエラーメッセージを受け取らない場合は、-n オプションなしでコマンドを再度実行して、インストールまたは更新を実際に実行します。新しい BE 内でインストールを実行するか、新しい BE またはバックアップ BE がデフォルトで作成されない場合にバックアップ BE を作成するためのオプションを指定するかどうかを検討します。

  • エラーメッセージを受け取る場合は、次のアクションを行います。

    • 問題の診断および修正に役立つ多くの情報を取得するために、パッケージ FMRI に多くのバージョンを指定します。

    • 詳細オプション -v を指定します (-nvv など)。

    • pkg history コマンドを使用します。-l オプションによって、変更されたパッケージの完全な FMRI が表示されます。操作履歴の表示を参照してください。

インストールまたは更新する複数のパッケージを指定するか、更新操作でパッケージ指定を省略したとき、いずれかのパッケージをこのイメージにインストールできない場合はインストールまたは更新操作が失敗します。1 つのパッケージをインストールできない場合、パッケージは一切インストールされません。詳細は、インストールできないパッケージのみ指定し、そのパッケージの完全な FMRI を指定し、1 つ以上の -v オプションを指定して、コマンドをふたたび呼び出してください。

パブリッシャーまたはリポジトリにアクセスできない

このセクションで説明するエラーは、パブリッシャーの URI にアクセスできないことに関連しています。

パッケージリポジトリにアクセスできない

エラーメッセージ:

  • Couldn't resolve host

  • Unable to contact any configured publishers

  • Unable to contact valid package repository

  • Origin URIs do not appear to point to a valid pkg repository

パブリッシャーの URI を表示するには、pkg publisher コマンドを使用します。次の例の LOCATION 列または URI 行を参照してください。

$ pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
solaris                     origin   online F http://pkg.oracle.com/solaris/release/
$ pkg publisher solaris
            Publisher: solaris
                Alias:
           Origin URI: http://pkg.oracle.com/solaris/release/

使用しなくなったパブリッシャーが一覧表示される場合、これらのパブリッシャーを無効にするか、削除します。

$ pkg set-publisher --disable publisher
$ pkg unset-publisher publisher

使用しているパブリッシャーについては、URI が正しいことを確認してください。

  • 各パブリッシャーの起点の場所をブラウザで表示するか、その場所に ping を実行してみてください。

  • pkgrepo list コマンドを使用して、その起点のパッケージを一覧表示してみてください。

起点の場所が正しくない場合、pkg set-publisher コマンドの -G および -g オプションを一緒に使用して、URI を変更します。

パブリッシャーに複数の起点がある場合は、すべての起点の場所にアクセスできることが必要です。いずれかの起点の場所にアクセスできない場合、pkg set-publisher コマンドの -G オプションを使用して、その起点を削除します。

パブリッシャーが非大域ゾーン内で構成された場合、そのパブリッシャーが大域ゾーン内で構成されていなくても、そのパブリッシャーについてのすべての場所が大域ゾーンからアクセス可能である必要があります。

SSL 証明書の問題

エラーメッセージ: SSL certificate problem, verify that the CA cert is OK

pkg コマンドによって、SSL 証明書の問題に関するメッセージが表示される場合、次の 1 つ以上のアクションを実行してください。

  • 必要な鍵および証明書がインストールされていることを確認します。鍵および証明書を取得する方法についての情報は、セキュアリポジトリに関するほかの情報に含まれています。

  • pkg set-publisher コマンドで -k および -c オプションを使用して、鍵および証明書がインストールされる場所を指定します。パブリッシャーに対する pkg publisher コマンドは、パブリッシャーによって鍵および証明書が検出されることが予想される場所を表示します。鍵および証明書がほかの場所にインストールされている場合、-k および -c オプションに正しい値を指定することによって、パブリッシャーを再構成します。

    次の例の出力には、鍵および証明書のファイルパスが表示され、abc パブリッシャーについて構成された起点の証明書が期限切れであることが表示されています。

    $ pkg publisher abc
     Publisher: abc
    Origin URI: https://pkg.oracle.com/abc/release/
       SSL Key: /var/pkg/ssl/keyfile
      SSL Cert: /var/pkg/ssl/certfile
    Certificate '/var/pkg/ssl/certfile' has expired.
      Please install a valid certificate.
  • システムの時間と日付が正しいことを確認してください。

  • ca-certificates SMF サービスをリフレッシュします。

    $ svcadm refresh svc:/system/ca-certificates:default
  • 起点の URI に oc-mgmt が含まれている場合、Ops Center サポート担当者に問い合わせてください。


注 -  クライアント SSL 証明書が必要なリポジトリは、pkg インストールコマンドに -g オプションを使用して指定することができません。

場所が見つかりません

エラーメッセージ: http protocol error: code: 404 reason: Not Found

パッケージリポジトリにアクセスできないの説明に従って、パブリッシャー URI を確認します。場所を表示したり ping を実行したりできる場合、pkgrepo list コマンドを使用して、リポジトリ内のいずれかのパッケージを表示してみてください。

URI がファイルベースのディレクトリの場合、ファイルおよびディレクトリが pkg5srv ユーザーによって読み取り可能であることを確認してください。pkgrepo verify コマンドを使用して、リポジトリが pkg5srv ユーザーによって読み取り可能であるかどうかを確認できます。

Web サーバー構成を確認します。詳細は、Oracle Solaris 11.2 パッケージリポジトリのコピーと作成 の第 5 章Web サーバーの背後での集積サーバーの実行を参照してください。

  • Apache Web サーバーインスタンスの背後にパッケージデポサーバーを実行している場合、エンコードされたスラッシュをデコードしないように、次の設定を httpd.conf ファイルに含めます。

    AllowEncodedSlashes NoDecode
  • デポサーバー pkg/proxy_base を、Apache サーバー上のリポジトリの URL に設定します。

    $ svccfg -s pkg/server:repo setprop pkg/proxy_base = astring: http://pkg.example.com/myrepo
    $ svcadm refresh pkg/server:repo

非大域ゾーンで問題が発生する場合、次のトラブルシューティングステップを実行します。非大域ゾーンはシステムリポジトリと呼ばれる特殊なパッケージリポジトリを使用します。システムリポジトリの詳細は、pkg.sysrepo(1M) のマニュアルページを参照してください。

  • 非大域ゾーンを持つイメージ内で -g オプションを使用することはできません。代わりに、pkg set-publisher コマンドを使用して、そのパブリッシャーおよび起点を明示的に追加します。

  • ファイルベースリポジトリ内のファイルおよびディレクトリが pkg5srv ユーザーによって読み取り可能であることを確認してください。pkg5srv ユーザーは system-repository Apache インスタンスを実行します。システムリポジトリの場所を見つける方法を示す例については、大域ゾーンと非大域ゾーンの関係を参照してください。

  • 外部の場所にアクセスするためにサイトでプロキシが必要な場合、大域ゾーンのパブリッシャーに対してプロキシが正しく指定されていることを確認します。プロキシを指定するには、pkg set-publisher コマンドの --proxy オプションを使用します。手順については、プロキシの指定を参照してください。プロキシの確認方法の 1 つとして、pkg refresh --full コマンドからアクセスエラーメッセージを受け取らないことを確認する方法があります。

  • サービス svc:/application/pkg/system-repository:default が大域ゾーンでオンラインであることを確認します。

  • サービス svc:/application/pkg/zones-proxyd:default が大域ゾーンでオンラインであること、およびサービス svc:/application/pkg/zones-proxy-client:default が非大域ゾーンでオンラインであることを確認します。

  • 大域ゾーンで、/var/log/pkg/sysrepo/* 内のログファイルを調べ、ファイルの読み取りを試行するときに権限エラーが報告されていないかどうかを確認します。404 または 503 エラーが /var/log/pkg/sysrepo/access_log に報告されていないか確認します。/var/log/pkg/sysrepo/error_log にエラーが報告されていないか確認します。

  • 大域ゾーンにおいて、/etc/hosts ファイルで localhost127.0.0.1 に設定されていることを確認します。/system/volatile/pkg/sysrepo/sysrepo_httpd.conf ファイルで、Listen127.0.0.1:1008 に設定され、ServerName127.0.0.1 に設定されていることを確認します。

  • 大域ゾーンで、ファイル /system/volatile/pkg/sysrepo/sysrepo_httpd.conf が次の形式の Alias 行を含むかどうかを確認します。

    $ grep Alias /system/volatile/pkg/sysrepo/sysrepo_httpd.conf
    WSGIScriptAlias /wsgi_p5p /etc/pkg/sysrepo/sysrepo_p5p.py

    sysrepo_httpd.conf ファイルに Alias 行がない場合、sysrepo サービスを再起動します。

    $ svcadm restart svc:/application/pkg/system-repository:default

サービスが使用不可

エラーメッセージ: http protocol error: code: 503 reason: Service Unavailable

pkg publisher コマンドを使用して、使用しようとしているパッケージリポジトリの場所を検出し、そのシステム上の SMF サービスを調べます。次のコマンドを使用して、使用可能であるが実行中でないパッケージリポジトリ SMF サービスインスタンスと、使用可能な別のインスタンスの実行を妨げているインスタンスを識別します。

$ svcs -xv pkg/server
svc:/application/pkg/server: default (image packaging repository)
 State: online since July 25, 2013 07:53:50 AM PDT
   See: /var/svc/log/application-pkg-server:default.log
Impact: None.

いずれかのサービスが問題を報告している場合、svcs 出力に一覧表示されるログファイルを確認して、特定の問題を判別します。

inst_root プロパティー、port プロパティー、およびその他のプロパティーが正しく設定されていることを確認します。

$ svcprop -p pkg pkg/server:default
$ svcprop -p pkg/inst_root -p pkg/port pkg/server:default
/export/IPSpkgrepos/Solaris
80

必要な場合、次の例に示すように、svccfg コマンドを使用してプロパティー値をリセットします。

$ svccfg -s pkg/server:default setprop pkg/port=1008

必要に応じてサービスインスタンスをクリア、リフレッシュ、再起動、および使用可能にするには、svcadm コマンドを使用します。

使用可能な更新がない

エラーメッセージ: No updates available for this image

特定のパッケージを更新する場合、次のコマンドを使用して、このイメージに現在インストールされているパッケージのバージョンを表示します。すべてのインストール済みパッケージを更新する場合 (pkg update でパッケージを指定しないか、パッケージ名として '*' を指定)、これらのコマンドの packagepkg:/entire を使用します。

$ pkg list -v package

現在インストールされているバージョンが存在しない場合、pkg update ではなく pkg install コマンドを使用してください。

あるバージョンの package が現在インストールされている場合、次のコマンドを使用して、構成済みのパブリッシャーから使用できる package のバージョンを表示します。

$ pkg list -afv package

最上位のバージョン番号を持つパッケージがすでにインストールされている場合、それより新しいバージョンはおそらく存在しません。

新しいバージョンが存在する場合、新しいバージョンが使用可能なパッケージリポジトリの場所を判別し、pkg set-publisher コマンドを使用して起点 URI をリセットするか、適切なパブリッシャーの起点 URI を追加します。必要な場合、必要な鍵および証明書をインストールし、-k および -c オプションを使用して、これらを指定します。pkgrepo list コマンドを使用して、現在インストールされているバージョンのパッケージが、構成済みのパブリッシャーからも利用できることを確認します。

次の例に示すように、インストールするパッケージの FMRI にバージョン (またはキーワード latest) を含めて -nv オプションを指定して、pkg update コマンドを再実行します。パッケージ名に指定する情報が多くなれば、エラー出力の情報も多くなります。

$ pkg update -nv package@latest

パッケージをインストールできない

エラーメッセージ: No matching version of package can be installed

次のコマンドを使用して、構成済みのパッケージパブリッシャーから使用できる package のバージョンを表示します。

$ pkg list -afv package

インストールするパッケージの FMRI を詳細に指定します。最初に検出された一致はこのイメージにインストール可能でないかもしれませんが、インストールする特定のバージョンはインストール可能な場合があります。FMRI をさらに特定しても依然としてインストール可能でない場合、FMRI を詳しく指定すると、パッケージをインストールできない理由が詳しく表示されます。

インストールまたは更新するパッケージのバージョンが凍結されていないことを確認してください。バージョンが凍結されたすべてのパッケージを一覧表示するには、引数を指定せずに pkg freeze コマンドを使用します。

インストールされている pkg:/entire パッケージのバージョンを表示するには、次のコマンドを使用します。

$ pkg list -v entire

pkg:/entire incorporation パッケージまたはほかの incorporation パッケージによって制約されているパッケージをインストールまたは更新することはできません。incorporation パッケージを更新する必要があります。詳細は、制約を満たすことができないを参照してください。

制約を満たすことができない

エラーメッセージ: No solution was found to satisfy constraints

このメッセージは、あるバージョンのパッケージをインストールしようとしたが、そのパッケージのバージョンが、incorporation パッケージによる制約で指定されたパッケージのバージョンと一致しないことを示しています。incorporation パッケージと制約については、incorporation パッケージを参照してください。

Incorporation によって、パッケージのセットは一緒に機能するバージョンに制約されるため、サポート可能なイメージを保持するのに役立ちます。このため、incorporation によって制約される 1 つのパッケージを更新しないでください。代わりに、incorporation パッケージを更新する必要があり、この結果、制約されたすべてのパッケージは、一緒にテストされた新しいバージョンのセットに更新されます。

パッケージが変更されるとき (たとえば更新されるとき)、pkg クライアントは関連するパッケージとそれらの依存関係を調べます。いずれかの依存パッケージをインストールまたは更新できない場合、インストールまたは更新できないパッケージに依存するパッケージごとに、個別のエラーメッセージが生成されます。大量のエラーメッセージを処理するもっとも効果的な方法は、もっともインデントされたエラーメッセージを最初に調べるやり方です。

incorporation によって制約されたパッケージの更新

エラーメッセージ:

  • No suitable version of installed package package found

  • All versions matching 'incorporate' dependency package are rejected

  • This version excluded by specified installation version

  • This version is excluded by installed incorporation

incorporation によって制約されたパッケージの場合、incorporation パッケージを更新し、制約されたすべてのパッケージを、一緒にテストされたセットとして保持することがベストプラクティスです。

incorporation からの 1 つのパッケージのみ更新する場合、パッケージの version-lock ファセットが true に設定されているかどうかを確認します。パッケージに version-lock ファセットが関連付けられている場合、そのパッケージを incorporation からロック解除できます。version-lock ファセットを false に設定して制約を除去し、その後パッケージのインストールまたは更新を再試行します。-nv オプションと、パッケージ名の FMRI に必要なパッケージのバージョンを指定します。incorporation によって指定されたバージョン制約の緩和も参照してください。

使用例 A-1  Java Runtime Environment のロック解除と更新

次の例は、runtime/java/jre-7 パッケージを更新する方法を示しています。jre-7 パッケージは consolidation/java/java-incorporation パッケージによって制約され、java-incorporation パッケージは同様に pkg:/entire incorporation パッケージによって制約されます。

次のコマンドは、0.175.2.0.0.9.0 バージョンの jre-7 が現在インストールされており、構成済みのパッケージリポジトリから新しいバージョンが使用可能であることを示しています。

$ pkg list -af runtime/java/jre-7
NAME (PUBLISHER)                                  VERSION                    IFO
runtime/java/jre-7                                1.7.0.21-0.175.2.0.0.13.0  ---
runtime/java/jre-7                                1.7.0.17-0.175.2.0.0.9.0   i--

-f オプションを削除すると、可能な更新後のバージョンが表示されます。次の pkg list 出力には、このイメージにインストール可能な新規バージョンがないことが示され、pkg update コマンド出力でこの状態が確認できます。-n オプションは、実行される変更を示しますが、変更を一切加えません。

$ pkg list -a runtime/java/jre-7
NAME (PUBLISHER)                                  VERSION                    IFO
runtime/java/jre-7                                1.7.0.17-0.175.2.0.0.9.0   i--
$ pkg update -nv runtime/java/jre-7
No updates available for this image.

このパッケージを更新できない理由を詳細に示すには、更新後のバージョンを指定します。次の例に示す出力では、インストール済みの java-incorporation@0.5.11,5.11-0.175.2.0.0.9.0 パッケージは、jre-7@1.7.0.21-0.175.2.0.0.13.0 パッケージのインストールを許可しないことを示しています。java-incorporation@0.5.11,5.11-0.175.2.0.0.13.0 パッケージは、jre-7@1.7.0.21-0.175.2.0.0.13.0 パッケージのインストールを許可しますが、インストール済みの entire@0.5.11,5.11-0.175.2.0.0.12.0 incorporation パッケージは jre-7@1.7.0.21-0.175.2.0.0.13.0 パッケージのインストールを許可しません。

$ pkg update -nv runtime/java/jre-7@1.7.0.21-0.175.2.0.0.13.0
pkg update: No solution was found to satisfy constraints

maintained incorporations:
  [output omitted]
  pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.12.0:20130415T172730Z

Plan Creation: dependency error(s) in proposed packages:
  [output omitted]
  No suitable version of required package pkg://solaris/consolidation/java/java-
incorporation@0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z found:
    Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0.1
75.2.0.0.9.0:20130304T213946Z
    Reason:  All versions matching 'incorporate' dependency pkg:/runtime/java/jr
e-7@1.7.0.17,5.11-0.175.2.0.0.9.0 are rejected
      Reject:  pkg://solaris/runtime/java/jre-7@1.7.0.17,5.11-0.175.2.0.0.9.0:20
130304T214022Z
      Reason:  This version excluded by specified installation version
        Reject:  pkg://solaris/runtime/java/jre-7@1.7.0.17,5.11-0.175.2.0.0.9.0:
20130304T214022Z
        Reason:  This version excluded by specified installation version
      Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0
.175.2.0.0.13.0:20130429T145534Z
      Reason:  This version is excluded by installed incorporation pkg://solaris
/entire@0.5.11,5.11-0.175.2.0.0.12.0:20130415T172730Z

Plan Creation: Errors in installed packages due to proposed changes:
  [output omitted]
  No suitable version of installed package pkg://solaris/consolidation/java/java
-incorporation@0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z found
    Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0.1
75.2.0.0.9.0:20130304T213946Z
    Reason:  All versions matching 'incorporate' dependency pkg:/runtime/java/jr
e-7@1.7.0.17,5.11-0.175.2.0.0.9.0 are rejected
      Reject:  pkg://solaris/runtime/java/jre-7@1.7.0.17,5.11-0.175.2.0.0.9.0:20
130304T214022Z
      Reason:  This version excluded by specified installation version
    Reject:  pkg://solaris/consolidation/java/java-incorporation@0.5.11,5.11-0.1
75.2.0.0.13.0:20130429T145534Z
    Reason:  This version is excluded by installed incorporation pkg://solaris/e
ntire@0.5.11,5.11-0.175.2.0.0.12.0:20130415T172730Z

ベストプラクティスは、entire パッケージを更新することです。entire パッケージを更新すると、java-incorporation パッケージが更新され、その結果として jre-7 パッケージが更新されます。この例では、Java パッケージを更新する必要があり、イメージを entire の更新済みバージョンに変更することはできません。

インストール可能な Java ソフトウェアのバージョンは、Java incorporation パッケージの version-lock ファセットを設定することによって制約されます。ほかのソフトウェアを更新せずに Java ソフトウェアを更新するには、Java incorporation パッケージの version-lock ファセットをロック解除し、そのあとで Java incorporation パッケージを更新します。version-lock ファセットの詳細は、incorporation によって指定されたバージョン制約の緩和を参照してください。

次のコマンドによって、インストール済みの java-incorporation パッケージの version-lock ファセットの値が false に変更されます。イメージ内の各パッケージがこのファセットに対して検査されるため、更新するパッケージ数は、このイメージにインストールされているパッケージの数です。

$ pkg change-facet \
facet.version-lock.consolidation/java/java-incorporation=false
            Packages to update: 856
     Variants/Facets to change:   1
       Create boot environment:  No
Create backup boot environment: Yes

Planning linked: 1/1 done
PHASE                                          ITEMS
Removing old actions                             1/1
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Building new search index                    856/856

次のコマンドは、ファセット値が変更されたことを示しています。

$ pkg facet
FACETS                                                   VALUE
facet.version-lock.consolidation/java/java-incorporation False

次のコマンドでは -n オプションが指定されているため、このコマンドによって変更される内容が示されますが、イメージを実際に変更するわけではありません。

$ pkg update -nv java-incorporation
            Packages to update:         2
     Estimated space available:  80.91 GB
Estimated space to be consumed: 687.28 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No

Changed packages:
solaris
  consolidation/java/java-incorporation
    0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z -> 0.5.11,5.11-0.175.2.0.0.13.0
:20130429T145534Z
  runtime/java/jre-7
    1.7.0.17,5.11-0.175.2.0.0.9.0:20130304T214022Z -> 1.7.0.21,5.11-0.175.2.0.0.
13.0:20130429T145626Z

次のコマンドは実際の更新を実行します。このコマンドは、現在のイメージ内で更新を実行します。新しいブート環境で更新を実行するために、--be-name オプションを使用する場合もあります。

$ pkg update -v java-incorporation
            Packages to update:         2
     Estimated space available:  80.91 GB
Estimated space to be consumed: 687.28 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No

Changed packages:
solaris
  consolidation/java/java-incorporation
    0.5.11,5.11-0.175.2.0.0.9.0:20130304T213946Z -> 0.5.11,5.11-0.175.2.0.0.13.0
:20130429T145534Z
  runtime/java/jre-7
    1.7.0.17,5.11-0.175.2.0.0.9.0:20130304T214022Z -> 1.7.0.21,5.11-0.175.2.0.0.
13.0:20130429T145626Z
DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                2/2       171/171    61.9/61.9    0B/s

PHASE                                          ITEMS
Removing old actions                             7/7
Installing new actions                           6/6
Updating modified actions                    170/170
Updating package state database                 Done
Updating package cache                           2/2
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Updating search index                            2/2

次のコマンドは、このイメージ内で jre-7 パッケージが更新されたことを確認しています。新しいブート環境で更新を実行する場合、beadm mount および pkg -R を使用して、新しいブート環境で次の検査を行います。

$ pkg list jre-7
NAME (PUBLISHER)                                  VERSION                    IFO
runtime/java/jre-7                                1.7.0.21-0.175.2.0.0.13.0  i--

適切な依存関係が見つからないときの Incorporation の更新

エラーメッセージ: A version for 'incorporate' dependency cannot be found

incorporation パッケージとそれらの incorporate 依存関係については、incorporation パッケージを参照してください。

incorporation パッケージの更新に失敗することがある理由の例として、incorporation パッケージの incorporate 依存関係のインストール状態が、次のようになっていることがあります。

  • 依存パッケージが異なるバージョンで凍結されている。

  • 依存パッケージが高いバージョンですでにインストールされている。

  • 依存パッケージが別のパブリッシャーからインストールされており、そのパブリッシャーが固定である。

使用例 A-2  依存関係がロック解除されていて別個に更新される場合の pkg:/entire の更新

次の例ではパッケージ名が指定されていないため、インストール済みのすべてのパッケージの更新が試行されます。この操作で更新を試行するインストール済みパッケージの 1 つが、pkg:/entire incorporation パッケージです。この例は、すでに高いバージョンでインストールされている pkg:/entireincorporate 依存関係を示しています。

$ pkg update --be-name s11.2
Creating Plan (Solver setup): /
pkg update: No solution was found to satisfy constraints
Plan Creation: Package solver has not found a solution to update to latest available versions.
This may indicate an overly constrained set of packages are installed.

latest incorporations:
[output omitted]
pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.10.0:20130318T181506Z

The following indicates why the system cannot update to the latest version:

No suitable version of required package pkg://solaris/entire@0.5.11,5.11-0.175.2
.0.0.10.0:20130318T181506Z found:
 Reject:  pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.10.0:20130318T181506Z
 Reason:  A version for 'incorporate' dependency on pkg:/consolidation/ub_javavm
/ub_javavm-incorporation@0.5.11,5.11-0.175.2.0.0.9.0 cannot be found

このメッセージでは、システムが更新対象としていた pkg:/entire incorporation パッケージのバージョンが、インストールできない ub_javavm-incorporation パッケージのバージョンを指定しています。1 つのパッケージをインストールできないため、パッケージは一切インストールされず、更新は失敗します。

次の方法を使用すれば、ub_javavm-incorporation パッケージをインストールできない理由の詳細を提供できます。

  • -v オプションを使用します。たとえば、詳細な出力を受け取るために、-v または -vv を使用します。

  • 更新するパッケージを指定します。一般的に、詳細な情報を入力すると、詳細なメッセージが表示されます。たとえば、パッケージ FMRI に、パッケージ名に加えてバージョンを指定します。

次のコマンドでは -v オプションを指定し、上記のメッセージからコピーされた entire@0.5.11,5.11-0.175.2.0.0.10.0 パッケージへの更新が指定されています。このコマンドでは、--be-name オプションの代わりに -n オプションが指定されています。-n オプションは、実行される内容を表示しますが、このイメージを実際に変更するわけではありません。

$ pkg update -nv entire@0.5.11,5.11-0.175.2.0.0.10.0
Creating Plan (Solver setup): /
pkg update: No matching version of entire can be installed:
 Reject:  pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.10.0:20130318T181506Z
 Reason:  All versions matching 'require' dependency pkg:/consolidation/ub_javav
m/ub_javavm-incorporation are rejected
  Reject:  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,
5.11-0.151.0.1:20101105T053418Z
  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.17
5.0.0.0.2.0:20111019T144756Z
  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.17
5.0.10.1.0.0:20120920T143020Z
  Reason:  Excluded by proposed incorporation 'entire'
  Newer version pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.
5.11,5.11-0.175.2.0.0.13.0:20130429T145201Z is already installed
  Reject:  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,
5.11-0.175.2.0.0.9.0:20130304T213739Z
  Reason:  Newer version pkg://solaris/consolidation/ub_javavm/ub_javavm-incorpo
ration@0.5.11,5.11-0.175.2.0.0.13.0:20130429T145201Z is already installed
 Reject:  pkg://solaris/consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5
.11-0.175.2.0.0.13.0:20130429T145201Z
 Reason:  Excluded by proposed incorporation 'entire'

これらのメッセージは、このイメージに現在インストールされている ub_javavm-incorporation パッケージのバージョンが、更新操作によってインストールされる pkg:/entire incorporation パッケージによって指定されたバージョンよりも新しいことを示しています。

次のコマンドは、現在インストールされている ub_javavm-incorporation パッケージのバージョンを表示します。

$ pkg list ub_javavm-incorporation
NAME (PUBLISHER)                                  VERSION                    IFO
consolidation/ub_javavm/ub_javavm-incorporation   0.5.11-0.175.2.0.0.13.0    i--

次のコマンドは、システムが更新対象として指定しようとした pkg:/entire incorporation パッケージによって指定されている ub_javavm-incorporation パッケージのバージョンを示しています。システムが更新対象として指定しようとした pkg:/entire incorporation パッケージのバージョンは、上記の出力の先頭にある「Reject」メッセージからのコピーです。-r オプションは、インストール済みイメージではなく構成済みのパッケージリポジトリからこのパッケージを検索します。

$ pkg contents -Hrt depend \
-a facet.version-lock.consolidation/ub_javavm/ub_javavm-incorporation=true \
-o fmri entire@0.5.11,5.11-0.175.2.0.0.10.0
consolidation/ub_javavm/ub_javavm-incorporation@0.5.11-0.175.2.0.0.9.0

この問題を修正するために、指定された特定のパッケージを除くすべてのインストール済みパッケージを更新するように更新操作に指示できます。pkg update コマンドで 1 つ以上の --reject オプションを使用して、--reject オプションで指定されたパッケージの更新を試行せずに更新を実行します。--reject 引数にはワイルドカードを使用できます。次のコマンドで、拒否するパッケージは上記の「Reason: Newer version is already installed」メッセージの前にある、「Reject」メッセージからコピーされたものです。

$ pkg update -v --be-name s11.2 \
--reject 'consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.151*' \
--reject 'consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.175.0*' \
--reject 'consolidation/ub_javavm/ub_javavm-incorporation@0.5.11,5.11-0.175.2.0.0.9.0*'

ヒント  - --reject 引数を指定するときは注意が必要です。すでにインストール済みで、--reject 引数に一致するすべてのパッケージはアンインストールされます。

インストール済みの依存関係が許容されないときの Incorporation の更新

エラーメッセージ:

  • The installed package package is not permissible

  • Excluded by proposed incorporation

これらのエラーメッセージを受け取った場合、package はおそらく、ほかのコアのオペレーティングシステムパッケージと同期して保持する必要があるコアのオペレーティングシステムパッケージです。pkg facet コマンドを使用して、facet.version-lock.package ファセットの値を確認してください。この version-lock ファセットの値が false の場合、pkg change-facet コマンドを使用して、このファセットの値を true に変更し、更新操作を再試行してください。

必要なパッケージが見つからない

エラーメッセージ: A version for 'require' dependency cannot be found

必要なパッケージが見つからないという次のメッセージのようなメッセージを受け取る場合、構成済みのパブリッシャーからパッケージが使用可能であるかどうかを確認します。

pkg update: No solution was found to satisfy constraints
Plan Creation: Package solver has not found a solution to update to
latest available versions.
This may indicate an overly constrained set of packages are installed.
[output omitted]
No suitable version of required package package1 found:
Reject: package1
Reason: A version for 'require' dependency package2 cannot be found

package2 が構成済みのパブリッシャーから使用可能であるかどうかを表示するには、次のコマンドを使用します。

$ pkg list -afv package2

パブリッシャーの起点の場所を確認するには、pkg publisher コマンドを使用します。このパッケージのパブリッシャーは、完全な FMRI の pkg:// の後に示されます。パブリッシャーの起点の場所を変更することが必要な場合もあります。場所がローカルパッケージリポジトリのとき、リポジトリの更新が必要な場合もあります。

必要なパッケージが拒否された

エラーメッセージ:

  • No solution was found to satisfy constraints

  • All versions matching 'require' dependency package are rejected

pkg update コマンドからの次の出力で、最初のエラーメッセージでは、必要なパッケージ desktop-incorporation の適切なバージョンが見つからないことが示されています。desktop-incorporation パッケージが適切でないのは、そのいずれかの依存パッケージが見つからないためです。適切なバージョンが見つからないため、desktop-incorporation パッケージは拒否されます。desktop-incorporation パッケージが pkg:/entire incorporation によって必要とされているため、pkg update は失敗します。次のコマンドは、desktop-incorporation パッケージが pkg:/entire incorporation によって必要とされていることが示されています。

$ pkg search -Hlo pkg.name require:consolidation/desktop/desktop-incorporation

その次のエラーメッセージでは、必要なパッケージ python-extra-26 の適切なバージョンが見つからないことが示されています。python-extra-26 パッケージが適切でない理由は、python-extra-26 パッケージには desktop-incorporation パッケージが必要ですが、desktop-incorporation の適切なバージョンが見つからなかったためです。

この情報により、この更新の失敗の解決策は、desktop-incorporation パッケージの必要なバージョンをインストールする方法を見つけることであるということがわかります。

pkg update: No solution was found to satisfy constraints

maintained incorporations:
  [output omitted]

Plan Creation: dependency error(s) in proposed packages:
  [output omitted]
  No suitable version of required package pkg://solaris/consolidation/desktop
/desktop-incorporation@0.5.11,5.11-0.175.2.0.0.26.0:20131028T145233Z found:
    Reject: pkg://solaris/consolidation/desktop/desktop-incorporation
@0.5.11,5.11-0.175.2.0.0.26.0:20131028T145233Z
    Reason: A version for 'incorporate' dependency on pkg:/library/python-2
/python-sexy-26@0.1.9-0.175.0.0.0.1.0 cannot be found
  No suitable version of required package pkg://solaris/library/python-2
/python-extra-26@2.6.4-0.175.1.0.0.15.0:201205014T200156Z found:
    Reject:  pkg://solaris/library/python-2/python-extra-26@
2.6.4-0.175.1.0.0.15.0:201205014T200156Z
    Reason: All versions matching 'require' dependency pkg:/consolidation
/desktop/desktop-incorporation are rejected
      Reject: pkg://solaris/consolidation/desktop/desktop-incorporation
@0.5.11,5.11-0.175.0.0.0.2.0:20111019T132128Z
  [output omitted]
pkg://solaris/consolidation/desktop/desktop-incorporation
@0.5.11,5.11-0.175.2.0.0.26.0:20131028T145233Z

次のコマンドは、必要な desktop-incorporation パッケージについて見つからないパッケージが、必要ではないことを示しています。python-sexy-26 パッケージは desktop-incorporation パッケージによる incorporation 対象となっていますが、必要ではありません。

$ pkg search -Hlo pkg.name require:library/python-2/python-sexy-26
$ pkg search -Hlo pkg.name incorporate:library/python-2/python-sexy-26
consolidation/desktop/desktop-incorporation

incorporate 依存関係は、python-sexy-26 パッケージがインストールされる場合、指定されたバージョンでインストールされなければならないことを示しています。ただし、python-sexy-26 パッケージを必要とするパッケージが存在しないため、python-sexy-26 パッケージをインストールする必要はありません。したがって、この更新の失敗の 1 つの解決策は、python-sexy-26 パッケージをアンインストールすることです。このパッケージの別のバージョンが現在インストールされており、更新では desktop-incorporation incorporation によって指定されたバージョンが見つかりませんでした。パッケージをアンインストールすると、更新処理では更新されたパッケージを見つける必要がなくなります。

python-sexy-26 パッケージが必要であってアンインストールすることを望まない場合、pkg:/library/python-2 /python-sexy-26@0.1.9-0.175.0.0.0.1.0 を提供するパッケージリポジトリを検索します。pkg set-publisher コマンドを使用して、そのリポジトリをパブリッシャーの起点の場所に追加するか、pkgrecv コマンドを使用して、そのパッケージを現在設定されているパブリッシャーの起点に追加します。

パッケージが期待どおりに更新されない

エラーメッセージ: pkg update: The installed package package is not permissible.

更新操作でワイルドカードを使用するとき、更新されるはずの一部のパッケージが更新されない場合にエラーメッセージがまったく表示されないことがあります。ワイルドカードを使用せずにパッケージ名を指定すると、エラーメッセージが表示される場合があります。

たとえば、新しいパッケージが構成済みのパブリッシャーから使用可能であることが確認されたにもかかわらず、次の操作がエラーを出さずに完了し、すべてのパッケージを更新しないことがあります。

$ pkg update '*'

詳細な情報を取得するには、ワイルドカードを使用する代わりに、更新後の pkg:/entire のバージョンを指定します。

$ pkg list -Hafv entire
pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.9.0:20130304T214506Z  ---
$ pkg update -nv pkg://solaris/entire@0.5.11,5.11-0.175.2.0.0.9.0:20130304T214506Z
Creating Plan (Solver setup): -
pkg update: The installed package compress/zip is not permissible.
  Reject:  pkg://solaris/compress/zip@3.0,5.11-0.175.2.0.0.7.0:20121119T070339Z
  Reason:  Excluded by proposed incorporation 'consolidation/userland/userland-incorporation'

この例で、パッケージ compress/zipuserland-incorporation incorporation パッケージの更新を妨げ、後者のパッケージは pkg:/entire incorporation の更新を妨げています。次のコマンドは、compress/zip パッケージの詳細情報を表示します。

$ pkg list compress/zip
NAME (PUBLISHER)  VERSION                   IFO
compress/zip      3.0-5.11-0.175.2.0.0.7.0  if-

この出力は、compress/zip パッケージが凍結されていることを示します。パッケージは凍結されているため更新できません。

$ pkg unfreeze compress/zip
compress/zip was unfrozen.

compress/zip パッケージの凍結を解除した場合、元の pkg update '*' 操作によって、更新が使用可能なイメージ内のすべてのパッケージが更新されるはずです。pkg freeze および pkg unfreeze コマンドについては、指定したバージョンへのパッケージのロックを参照してください。

同期リンクされたパッケージをインストールできないに示す pkg sync-linked エラーも類似していますが、非大域ゾーン内のパッケージが更新を妨げていることを示しています。

同期リンクされたパッケージをインストールできない

エラーメッセージ: pkg sync-linked: The installed package package is not permissible.

sync-linked パッケージは、非大域ゾーンのパッケージです。親イメージとのバージョンの不一致という理由でパッケージの拒否が表示される場合があります。

Linked progress: -pkg: update failed (linked image exception(s)):

A 'sync-linked' operation failed for child 'zone:z1' with an unexpected
return value of 1 and generated the following output:

pkg sync-linked: The installed package package is not permissible.
  Reject:  package
  Reason:  Parent image has a incompatible newer version: package

次の理由により、この非互換性メッセージを受け取ることがあります。

  • コアのオペレーティングシステムパッケージは、非大域ゾーンと大域ゾーンとで同じバージョンにする必要があります。これらのパッケージを非大域ゾーンで個別に更新することはできません。同様に、1 つの非大域ゾーン内でこれらのいずれかのパッケージを凍結すると、大域ゾーンとすべての非大域ゾーンで更新が失敗します。

    次のコマンドは、大域ゾーンと非大域ゾーンの間で同期を維持する必要があるパッケージを一覧表示します。

    $ pkg search -o pkg.name :depend:parent:
  • ゾーンが構成されている BE を更新するとき、その BE をマウントし、pkg -R コマンドを使用して代替 BE (ABE) を更新するという操作は、ABE のパブリッシャー構成が、現在ブートされている BE のパブリッシャー構成と異なる場合は実行できません。ABE の非大域ゾーンでは、現在アクティブな BE からのパブリッシャー構成が使用されます。

非大域ゾーンをインストールできない

エラーメッセージ: The following pattern(s) did not match any allowable packages. Try using a different matching pattern, or refreshing publisher information

コアのオペレーティングシステムパッケージは、非大域ゾーンと大域ゾーンとで同じバージョンにする必要があります。このイメージ内の solaris パブリッシャーの起点が、大域ゾーンにインストールされたシステムパッケージと同じバージョンを含まないパッケージリポジトリに設定された場合、非大域ゾーンをインストールしようとすると、次のエラーになります。

$ zoneadm -z myzone install
The following ZFS file system(s) have been created:
    rpool/export/zones/myzone
Progress being logged to /var/log/zones/zoneadm.20131104T181301Z.myzone.install
       Image: Preparing at /export/zones/myzone/root.

AI Manifest: /tmp/manifest.xml.9daq.i
SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
  Zonename: myzone
Installation: Starting ...

            Creating IPS image
Startup linked: 1/1 done
            Installing packages from:
                solaris
                    origin:  http://pkg.oracle.com/solaris/release/
            Error occurred during execution of 'generated-transfer-4606-1' checkpoint.
            Failed Checkpoints:

            Checkpoint execution error:

                The following pattern(s) did not match any allowable packages. Try
                using a different matching pattern, or refreshing publisher information:

Installation: Failed.  See install log at /system/volatile/install.4606/install_log
ERROR: auto-install failed.

非大域ゾーンをインストールするには、solaris パブリッシャーの起点として設定するリポジトリが、非大域ゾーンのインストール場所となる大域ゾーン内にインストールされているものと同じシステムソフトウェアを最低限含んでいる必要があります。リポジトリには古いソフトウェアまたは新しいソフトウェアを含めることもできますが、大域ゾーンにインストールされているものと同じソフトウェアを含む必要があります。次のコマンドは、大域ゾーンにインストールされている pkg:/entire パッケージと同じバージョンが /export/IPSpkgrepos/Solaris リポジトリに含まれているため、このリポジトリはこの大域ゾーンの適切なパブリッシャーの起点であることを示しています。

$ pkg list entire
NAME (PUBLISHER)      VERSION                   IFO
entire                0.5.11-0.175.2.0.0.26.0   i--
$ pkgrepo list -H -s /export/IPSpkgrepos/Solaris \
entire@0.5.11-0.175.2.0.0.26.0
solaris       entire       0.5.11-0.175.2.0.0.26.0:20131028T190148Z
$ pkg set-publisher -G '*' -M '*' -g /export/IPSpkgrepos/Solaris/ solaris

イメージを修正できない

エラーメッセージ: pkg: The image cannot be modified as it is currently in use by another package client

次の例に示すように、エラーメッセージには、イメージがロックされているクライアントの名前と pid が含まれているはずです。

pkg: The image cannot be modified as it is currently in use by another package
client: pkg on cbusl0406l, pid 26604.

現在のパッケージ処理 (この例では処理 26604) が終了したあとで pkg コマンドを再試行してください。処理がすぐに終了しない場合、たとえば ptree -a を使用して、処理の調査を開始します。

このイメージについて現在動作中のパッケージ処理は、更新が使用可能かどうかを検査する更新マネージャーである場合があります。更新マネージャーの cron ジョブと pkg/update サービスの詳細については、更新マネージャーの使用 を参照してください。

ファイルが回収された

次の情報メッセージの後に、改修されたファイルのパスと、ファイルの一時的な移動先が続きます。

The following unexpected or editable files and directories were
salvaged while executing the requested package operation; they
have been moved to the displayed location in the image:

これは情報メッセージのため無視してもかまいませんが、必要に応じて対応することもできます。

ディレクトリは、IPS で参照カウントされます。あるディレクトリを明示的または暗黙的に参照している、イメージ内にインストールされている最後のパッケージがそのディレクトリを参照しなくなると、そのディレクトリは削除されます。そのディレクトリにパッケージ解除されたファイルシステムオブジェクトが含まれている場合、それらの項目は $IMAGE_META/lost+found に移動されます。パッケージ解除されたファイルシステムオブジェクトは、IPS パッケージで配信されなかったファイルおよびディレクトリです。IMAGE_META の値は通常 /var/pkg です。IMAGE_META ディレクトリについての詳細は、pkg(5) のマニュアルページのファイルに関するセクションを参照してください。

格納されるイメージメタデータの最小化

/var/pkg ディレクトリはイメージのメタデータを保持します。このディレクトリは非常に大きくなる可能性があります。/var/pkg ディレクトリから手動で削除しないでください。

flush-content-cache-on-success イメージプロパティーの値が true に設定されていることを確認します。flush-content-cache-on-success プロパティーの値はデフォルトで true です。flush-content-cache-on-success の値が true の場合は、pkg install および pkg update の操作が正常に完了したとき、キャッシュ済みファイルが削除されます。flush-content-cache-on-success プロパティーが false に設定されている場合、次の例に示すコマンドを使用して、値を true にリセットできます。

$ pkg property flush-content-cache-on-success
PROPERTY                       VALUE
flush-content-cache-on-success False
$ pkg set-property flush-content-cache-on-success true
$ pkg property -H flush-content-cache-on-success
flush-content-cache-on-success True

内容キャッシュのフラッシュ (flush-content-cache-on-successtrue に設定すること) によって、一部の pkg 操作が完了するまでの時間が長くなることがあります。

非大域ゾーンには別のキャッシュがあり、/usr/lib/pkg.sysrepo-c オプションで設定できます。-s オプションで、このキャッシュの最大サイズを設定できます。pkg.sysrepo(1M) のマニュアルページを参照してください。

パッケージのインストールパフォーマンスの増大

次のステップは、パッケージのインストールおよび更新のパフォーマンスの増大に役立ちます。

  • ZFS ストレージプールの容量が 80% より低いことを確認します。

    $ zpool list
    NAME  SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
    rpool 186G 75.2G 111G 40% 1.00x ONLINE -
  • ローカルパッケージリポジトリを使用します。Oracle Solaris 11.2 パッケージリポジトリのコピーと作成 を参照してください。

  • http_proxy が設定されている場合、プロキシのパフォーマンスを確認します。