アプリケーションを詳細に調べて Oracle Solaris 11 用に準備する

2011 年 11 月

Stefan Schneider 著

オラクルの標準的なプロセスとツールを使用して、既存の Oracle Solaris 10 アプリケーションを Oracle Solaris 11 に移行する方法について解説します。


アプリケーションをテストする理由

 「Oracle Solaris Binary Compatibility Guarantee」は、パブリックで安定したプログラミングAPI を使う限り、Oracle Solaris 10 用に開発されたアプリケーションがOracle Solaris 11 上で動作することを保証しています。

OTN は、情報に裏付けられた意思決定の一助となるよう、オラクルが提供するテクノロジーを十分に理解するためのさまざまなヘルプを提供します。技術記事、ソフトウェアのダウンロード、ドキュメントなどの内容が含まれます。業務に必要な技術リソースを入手するために、メンバーシップに参加してください。

適切に構築された Oracle Solaris 10 アプリケーションを Oracle Solaris 11 で単に動作させるだけでは、高いレベルのユーザー経験の保証としては十分ではありません。Oracle Solaris 11 は 6 年の技術の進化を取り込んでおり、次のような理由で構成の変更が必要な場合があります:

  • アプリケーションフレームワークの新しいバージョン (GNOME など) が装備されています。
  • フレームワークの中には、ほかのフレームワークに置き換えられたものもあります。たとえば lpd  は cups に置き換えられました。
  • Oracle Solaris 10 で使用されていたプライベートで不安定な API は、Oracle Solaris 11 から削除されている可能性があります。たとえば Oracle Solaris 9 で静的にリンクされていたアプリケーションで、たまたま Oracle Solaris 10 で動作していた場合などです。これらのアプリケーションは Oracle Solaris 11 上で動作しない可能性があります。
  • コマンド群が配置されている場所が異なります。たとえば /usr/ucb/whoami は /usr/bin/whoami に変更されました。
  • 古い ISO 非準拠のロケールは削除されました。

適切に実装された Oracle Solaris 10 アプリケーションであれば、この変更による影響は受けません。Oracle Solaris 10 コーディングとオペレーション基準に従わずに作成されたアプリケーションの場合は、構成の変更が必要になることがあります。

移行プロセスの概要

オラクルは Oracle Solaris 11 への移行を促進するために、Oracle Solaris 11 への移行を計画する際に使用できるツールセットや採用のためのガイドを提供しています。図 1 を参照してください。

Figure 1

図 1. 移行プロセスの概要

適切に管理された Oracle Solaris 11 への移行を確実にするために、まず、「Oracle Solaris 11 ISV用導入ガイド」を参照してください。このドキュメントは、正しく設計されなかった Oracle Solaris 10 アプリケーションによって Oracle Solaris 11 上で発生する問題の一般的なチェックリストです。このドキュメントには、Oracle Solaris 11 上で問題を起こす可能性のある既知の事例についてすべて列挙されています。
また、「 Oracle Solaris 11 End of Features (EOF) Notices page」には、Oracle Solaris 11 では対応されていない廃止されたソフトウェアフレームワークと旧型のハードウェアが一覧されています。このページは、Oracle Solaris 10 アプリケーションが Oracle Solaris 11 の潜在的な問題を特定するための補足的なチェックリストとして使用することができます。

Oracle Solaris Preflight Applications Checker

アプリケーションは、通常多数のサブコンポーネントとサードパーティコンポーネントからなります。前の項で説明した技術資料を参照して、アプリケーションの技術的な問題を評価することができます。ただし、サードパーティのコンポーネントの評価を厳密に行うのは難しいかもしれません。
Oracle Solaris Preflight Applications Checker を使用すると、実行中の Oracle Solaris 10 アプリケーションに対する Oracle Solaris 11 の移行可能性を確認することができます。このチェッカは HTML のレポートを生成し、そのレポートは「やるべきことリスト」として使用することができます。このようなリストが手元にあると、その根底にある原因を明らかにするための初期のQAを行わずとも、レポートで示された課題を見ることで重要な QA 時間や根本原因を特定するための時間を抑えることができ、経費削減につながります。
Oracle Solaris Preflight Applications Checker には 3 つの別々のコンポーネントが装備されています。図 2 に示します。

  • アプリケーションバイナリをスキャンするバイナリアナライザ
  • アプリケーションのソースとスクリプトをスキャンするソースコードアナライザ
  • Oracle Solaris 11 に問題を起こす可能性のある、実行中のアプリケーションに対する呼出しやファイルアクセスのオペレーションを監視する、実行時アナライザ
Figure 2

図 2. Oracle Solaris Preflight Applications Checker のコンポーネント

バイナリアナライザ

Oracle Solaris のすべてのインタフェースは上位互換性を保証するようバージョン管理されており、それらは public または private でラベル付けされています。パブリックインタフェースは Oracle Solaris の最上位で実行されるアプリケーションやミドルウェア用なのに対して、プライベートインタフェースは Oracle Solaris インタフェースからのみ使用されることを意図しています。
バイナリ互換性において問題発生の原因となるのはほとんどの場合プライベートシンボルの使用によるものですが、不安定な運用環境によって引き起こされる問題もあります。不安定な環境には、Oracle Solaris 共有オブジェクトからコンパイル時のアプリケーションへの静的リンクなどが含まれます。これは Oracle Solaris インタフェースが変更されたことによることが原因と考えられます。インタフェースが進化すると、静的にリンクされた共有オブジェクトとそのほかの Oracle Solaris ライブラリとのインタラクションにもバイナリ互換性のリスクが発生します。このため互換性チェックのフェーズでは、静的リンクがオブジェクトのプロファイルに記述されている場合、互換性チェックツールはこの状態を危険であるとレポートします。さらに、特定のシンボルを調べることによって部分的な静的リンクの確認のために経験則が使われます。

バイナリスキャンの初期フェーズを実行中に、アプリケーションによって使用される、バインドされ関連付けられたすべてのシンボルが抽出されます。互換性チェックツールはユーザーが提供したアプリケーション環境変数 LD_LIBRARY_PATH を調べて、アプリケーション実行中に使用されるライブラリを確認します。この情報は、検査されるオブジェクトのパス名と、Oracle Solaris 共有ライブラリにバインドされるシンボルを確認するために解析されます。プロファイルのフェーズで使用されるもう 1 つのユーティリティーは elfdump コマンドです。このコマンドは、オブジェクトが依存する動的リンク情報をダンプします。

ソースコードアナライザ

静的ソースコード解析モジュールを使って、C/C++ソースコード、K シェル、そのほかのシェルスクリプトの互換性の問題を確認することができます。このモジュールは主に、削除、名前変更、修正、古くなった Oracle Solaris ライブラリ関数とシェルコマンドの使用についてチェックします。

実行時アナライザ

実行時アナライザモジュールを既存の Oracle Solaris 10 テスト環境で実行して、潜在的な互換性の問題のレポートを得ることができます。このモジュールのツールは DTrace を使用してプロセスの詳細を観察し、必要に応じて Oracle Solaris 10 上で使用可能なほかのシステムツールを起動することがあります。

このツールは、システムにわたるチェックから特定のプロセスのみのチェックといった異なる状況に対して、それぞれの適用範囲で実行するために構成することができます。

実行時アナライザツールは次のケースの既知の問題をレポートします:

  • 古い (EOL になった) コマンドの呼出し
  • 名前や場所が変更されたコマンドの呼出し
  • 古いオプションを持つコマンドの呼出し
  • 古いファイルやデバイス、または名前や場所が変更されたファイルやデバイスを開く、読み込む、書き込む
  • postgreSQL を使用するためのハードコードされたパスなど、旧バージョンまたは削除されたバージョンのユーティリティーやパッケージの使用
  • 削除されるか交換されたデバイスドライバインタフェースの使用
  • 古いかEOL された関数、API、シンボルの使用または呼出し
  • プライベートインタフェースの使用または呼出し
  • 古いか名前変更されたライブラリの動的読み込み

まとめ

ほとんどのアプリケーションでスキャンツールの使用による問題発生はレポートされておらず、「Oracle Solaris 11 ISV用導入ガイド」や「Oracle Solaris 11 EOF ページ」で議論されている問題に直面することはありません。したがってほとんどのアプリケーションは Oracle Solaris 11 上でそのまま動作すると考えられます。ただし旧型の古いフレームワークや API を使用している場合、いくつかのアプリケーションで問題をレポートすることがあります。このようなアプリケーションは修正する必要があります。

Oracle Solaris 11 Preflight Applications Checker と「Oracle Solaris 11 ISV用導入ガイド」は、レポートされた問題による影響を軽減する判断材料として役立ちます。たとえば、Oracle Solaris 10 から Oracle Solaris 10 ゾーンにアプリケーションを移行するためのツールとして、Oracle Solaris 11 上で Oracle Solaris 10 モードで動作するOracle p2v (物理から仮想) または v2v (仮想から仮想) を使用するように決定できます。

詳細情報

そのほかの情報については以下を参照してください:

Revision 1.0, 11/02/2011