このセクションで説明するエラーは、パブリッシャーの URI にアクセスできないことに関連しています。
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 オプションを使用して、その起点を削除します。
パブリッシャーが非大域ゾーン内で構成された場合、そのパブリッシャーが大域ゾーン内で構成されていなくても、そのパブリッシャーについてのすべての場所が大域ゾーンからアクセス可能である必要があります。
イメージに非大域ゾーンが含まれている場合は、場所が見つからないで非大域ゾーンの場合の手順を参照してください。
エラーメッセージ:
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
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
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 オプションを使用して、そのプロキシを設定します。手順については、プロキシの指定を参照してください。
システムが外部 IPS リポジトリにアクセスできるようなファイアウォールルールについては、Oracle Enterprise Manager Ops Center のポートおよびプロトコルに関するガイドでファイアウォールルールのセクションを参照してください。このリストは、Ops Center を使用していない場合にも役立ちます。
自己署名証明書を使用中の場合、Oracle Solaris 12 パッケージリポジトリのコピーと作成 の Creating a Self-Signed Server Certificate Authorityに示すように CA 証明書をシステムに追加します。
Ops Center を使用している場合は、Oracle Enterprise Manager Ops Center のパブリッシャーの構成を参照してください。
エラーメッセージ: http protocol error: code: 404 reason: Not Found
パッケージリポジトリにアクセスできないの説明に従って、パブリッシャー URI を確認します。場所を表示したり ping を実行したりできる場合、pkgrepo list コマンドを使用して、リポジトリ内のいずれかのパッケージを表示してみてください。
URI がファイルベースのディレクトリの場合、ファイルおよびディレクトリが pkg5srv ユーザーによって読み取り可能であることを確認してください。pkgrepo verify コマンドを使用して、リポジトリが pkg5srv ユーザーによって読み取り可能であるかどうかを確認できます。
Web サーバー構成を確認します。詳細は、Oracle Solaris 12 パッケージリポジトリのコピーと作成 の 第 5 章, Running the Package Depot Server Behind a Web Serverを参照してください。
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(8) のマニュアルページを参照してください。
非大域ゾーンを持つイメージ内で -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 ファイルで localhost が 127.0.0.1 に設定されていることを確認します。/system/volatile/pkg/sysrepo/sysrepo_httpd.conf ファイルで、Listen が 127.0.0.1:1008 に設定され、ServerName が 127.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 コマンドを使用します。