Go to main content
Oracle® Solaris 11.3 ソフトウェアの追加と更新

印刷ビューの終了

更新: 2017 年 3 月
 
 

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

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

Oracle Enterprise Manager Ops Center のパブリッシャーの構成

Ops Center を使用している場合、IPS パッケージリポジトリは、Oracle Solaris ソフトウェア更新ライブラリと呼ばれます。ライブラリを更新する方法については、Oracle Enterprise Manager Ops Center の構成リファレンスマニュアルでソフトウェアライブラリのセクションの Oracle Solaris のセクションを参照してください。

solaris パブリッシャーに新しい証明書を関連付けるには、Ops Center BUI でライブラリ -> Oracle Solaris セクションの、親リポジトリの構成およびコンテンツの追加アクションを使用します。

システムが外部 IPS リポジトリにアクセスできるようなファイアウォールルールについては、Oracle Enterprise Manager Ops Center のポートおよびプロトコルに関するガイドでファイアウォールルールのセクションを参照してください。このリストは、Ops Center を使用していない場合にも役立ちます。

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

エラーメッセージ:

  • 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

  • Framework error: code: E_COULDNT_CONNECT (7) reason: Failed to connect

パブリッシャーの 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 オプションを使用して、その起点を削除します。

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

イメージに非大域ゾーンが含まれている場合は、Location Not Foundで非大域ゾーンの場合の手順を参照してください。

SSL 証明書の問題

エラーメッセージ:

  • Framework error: code: 35 reason: SSL routines

  • Framework error: code: 60 reason: SSL certificate problem, verify that the CA cert is OK

  • Framework error: code: 60 reason: SSL certificate problem: self signed certificate


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

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

  • システムの時間と日付が正しいことを確認してください。

  • パブリッシャーの起点で必要な鍵および証明書がインストールされていて、期限切れではないことを確認します。

    鍵および証明書を取得する方法についての情報は、セキュアリポジトリに関するほかの情報に含まれています。たとえば、https://pkg-register.oracle.com/ のサイトを使用して、https://pkg.oracle.com/solaris/support/ Oracle Solaris サポートリポジトリの鍵および証明書を取得します。

    このパブリッシャーの鍵および証明書ファイルをインストールするには、pkg set-publisher コマンドで -k および -c オプションを使用します。各パブリッシャーには 1 つだけの鍵と証明書を指定できます。パブリッシャーに複数のセキュアな起点が構成されている場合、すべてのセキュアな起点で 1 つの鍵と証明書を共有します。

    $ pkg set-publisher -k /tmp/keyfile -c /tmp/certfile publisher-name

    鍵および証明書ファイルがインストールされており、期限切れでないことを確認するには、パブリッシャーに対して pkg publisher コマンドを使用します。

    $ pkg publisher solaris
    
                Publisher: solaris
                    Alias:
               Origin URI: https://pkg.oracle.com/solaris/support/
                  SSL Key: /var/pkg/ssl/keyfile
                 SSL Cert: /var/pkg/ssl/certfile
     Cert. Effective Date: July  1, 2015 04:47:13 PM
    Cert. Expiration Date: July  8, 2017 04:47:13 PM
              Client UUID: client-uuid
          Catalog Updated: May 11, 2016 03:28:43 PM
                  Enabled: Yes
               Properties:
                           proxied-urls = []
                           signature-policy = require-signatures

    鍵または証明書の有効期限が切れている場合は、次のようなエラーメッセージが表示されます。

    Certificate '/var/pkg/ssl/certfile' has expired.
      Please install a valid certificate.
  • 鍵および証明書が指定された起点で有効であることを確認します。

    次のコマンドは、指定された起点に鍵と証明書が必要であるため失敗します。

    $ pkgrepo info -s https://pkg.oracle.com/solaris/support/

    次のコマンドは、pkg publisher publisher-name の出力からコピーされた鍵および証明書ファイル名が有効であるために成功します。

    $ pkgrepo info -s https://pkg.oracle.com/solaris/support/ \
    > --key /var/pkg/ssl/keyfile --cert /var/pkg/ssl/certfile
    PUBLISHER PACKAGES STATUS           UPDATED
    solaris   6711     online           2016-05-19T19:00:10.152688Z
  • CA 証明書が破損していないことを確認します。

    crypto/ca-certificates パッケージを確認します。

    $ pkg verify crypto/ca-certificates

    問題が報告されている場合は、次の手順を実行します。

    • crypto/ca-certificates パッケージを修正します。

      $ pkg fix crypto/ca-certificates
    • system/ca-certificates SMF サービスをリフレッシュします。

      $ svcadm refresh svc:/system/ca-certificates:default
  • プロキシおよびファイアウォールを確認します。

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

    システムが外部 IPS リポジトリにアクセスできるようなファイアウォールルールについては、Oracle Enterprise Manager Ops Center のポートおよびプロトコルに関するガイドでファイアウォールルールのセクションを参照してください。このリストは、Ops Center を使用していない場合にも役立ちます。

  • 自己署名付き証明書を使用している場合は、Creating a Self-Signed Server Certificate Authority in Copying and Creating Package Repositories in Oracle Solaris 11.3の説明に従って、CA 証明書をシステムに追加します

  • Ops Center を使用している場合は、Configuring Publishers in Oracle Enterprise Manager Ops Centerを参照してください。

場所が見つかりません

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

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

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

Web サーバー構成を確認します。詳細は、Chapter 5, Running the Depot Server Behind a Web Server in Copying and Creating Package Repositories in Oracle Solaris 11.3を参照してください。

  • 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 インスタンスを実行します。システムリポジトリの場所を見つける方法を示す例については、Relationship Between Global and Non-Global Zonesを参照してください。

  • 外部の場所にアクセスするためにサイトでプロキシが必要な場合、大域ゾーンのパブリッシャーに対してプロキシが正しく指定されていることを確認します。プロキシを指定するには、pkg set-publisher コマンドの --proxy オプションを使用します。手順については、Specifying a 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
/var/share/pkgrepos/solaris
80

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

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

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