バイナリ互換性ガイド

バイナリ互換パッケージの使用方法

バイナリ互換パッケージの機能は、SunOS 4.x アプリケーションを Solaris 8 上で実行する時に、自動的かつ透過的に呼び出されます。アプリケーションを変更する必要はありません。

すべての Solaris 8 リリースでは SunOS 4.x の動的にリンクされた実行可能ファイルを使用できます。Solaris 2.3 以降では、静的にリンクされた実行可能ファイルも実行できます。Solaris 2.5 以降では、静的リンクと動的リンクの混在した実行可能ファイルを使用できます。

SunOS 4.x と Solaris 8 の間の多くの相違点があります。このうちのいくつかは、コマンドのバイナリやライブラリなどがインストールされているディレクトリやファイル名の違いに起因します。このような相違点があるため、PATH 環境変数の定義のしかたによって、バイナリ互換パッケージを使用した場合のアプリケーションの実行状況が異なります。次の項ではこの点について詳しく説明します。

パス名の解決処理

パス名の解決処理については、問題点が 2 つあります。第 1 は、Solaris 8 リリースと SunOS 4.x リリースとの間でコマンドやライブラリのファイルが存在する位置 (ディレクトリ) が異なるという点です。たとえば、SunOS 4.x リリースでは /usr/bin に入っていたコマンドが、Solaris 8 リリースでは /usr/ucb に入っている場合があります。ソース互換パッケージは、この相違点を解決するために、可能な限りシンボリックリンクをセットアップして、旧パス名を使用しているアプリケーションがファイルにアクセスできるようにします。

第 2 に Solaris 8 リリースの多くのコマンドと、SunOS 4.x の対応コマンドとの間に互換性がないという点があります。これに対処するために、ソース互換パッケージには、一組の SunOS 4.x 互換コマンドバイナリが組み込まれています。アプリケーションが、実行するコマンド名だけ (パス名なし) を指定した場合は、バイナリ互換パッケージのもとで PATH 環境変数が解釈され、正しいコマンドが見つけられます。したがって、アプリケーションを実行する前に、PATH 変数を正しく設定しておく必要があります。

たとえば、SunOS 4.x のデフォルトの動作を実行したい場合は、PATH の中で /usr/bin の前に /usr/ucb を指定します。このようにしておかないと、Solaris 8 のデフォルトの動作が引き起こされることになります。

フルパス名を指定したコマンドは、バイナリ互換パッケージ環境下でも、そのパス名の通りに解釈されます。パスが /usr/5bin で始まっている場合は、そのコマンドのデフォルトである Solaris 8 バージョンが実行されます。そうでない場合は、ソース互換パッケージバージョンが実行されます。相対パス名も通常と同じく解釈されます。

Solaris 2.5 から、5 つのコマンドが /usr/ucb から /usr/bin へ移動され、絶対パスを使用して書かれたシェルスクリプトを使用できるようになりました。これらのコマンドは、arch(1)hostid(1)hostname(1)mach(1) および pagesize(1) です。

パフォーマンスへの影響

バイナリ互換パッケージを使って SunOS 4.x バイナリを実行するには、同じバイナリを SunOS 4.x の下で実行する場合や、同じアプリケーションを Solaris 8 に移植してから実行する場合に比べて、多くのメモリーが必要です。さらに、必要なディスク記憶容量とディスクアクセスの回数も多くなります。したがって、バイナリ互換パッケージを使用すると、アプリケーションとシステム全体のパフォーマンスは低下します。