バイナリ互換性ガイド

システムファイル

Solaris 2.x リリースでは、多くのシステムファイルの名前が変更されたり、移動されたりしています。このリリースでは存在しなくなったものもあり、形式が変わったものもあります。バイナリ互換パッケージは、シンボリックリンクを作成するか新規ファイルをインストールし、さらにデータをマップすることによって、可能な限りこの問題に対処します。


注 -

移植可能プログラムでは、システム依存ファイルの使用は避けてください。このようなファイルへのアクセスを必要とするプログラムは、提供されている標準インタフェースルーチンを使ってそのアクセスを行う必要があります。たとえば、この種のプログラムでは、/etc/mtab ファイルを直接オープンし読み取るのではなく、getmnt() ファミリのルーチンを使って mtab ファイルの内容にアクセスするようにします。


アカウントファイル

Solaris 2.x のアカウントファイルは、SunOS 4.x のアカウントファイルと形式が異なります。アカウントファイルにアクセスするアプリケーションには、バイナリ互換性はありません。

/etc/exports、/etc/xtab

Solaris 2.x リリースでは、システムファイルのエクスポートの取り扱い方が SunOS 4.x の場合と大幅に異なります。これらのファイルについてのバイナリ互換性はありません。しかし、ユーザアプリケーションがこれらのファイルにアクセスする必要はないので、これは問題ではありません。

/etc/fstab、/etc/mtab

これらのファイルの名前と形式が変わりました。バイナリ互換パッケージは、これらのファイルに対する読み取り専用アクセスをアプリケーションに与えるために必要なマッピングを行います。これらのファイルに対する書き込みアクセスを必要とするアプリケーションには、バイナリ互換性はありません。アプリケーションは、これらのファイルへの書き込みは行わないものと想定されます。


注 -

これらのファイルへのシンボリックリンクはサポートされなくなりました。つまり、アプリケーションが /etc/fstab または /etc/mtab へのリンクを作成し、シンボリックリンクをオープンしようとすると、その open() コールは失敗します。


/etc/gettytab

このファイルに直接対応するファイルは Solaris 2.x リリースにはありません。バイナリ互換パッケージの一部としても提供されていません。このファイルを使用するアプリケーションには、バイナリ互換性はありません。

/etc/passwd

Solaris 2.x リリースでは、実際のパスワードはシャドウファイル内に保管されます。passwd ファイルにアクセスしてパスワードを取得するアプリケーションにバイナリ互換性はありません。すべてのアプリケーションは、getpw() インタフェースルーチンを介してこのファイルにアクセスする必要があります。

/etc/printcap

SunOS 4.x の printcap は、SunOS 5.x では terminfo ディレクトリツリーで置き換えられました。バイナリ互換パッケージは、アプリケーションが実行されているホスト上の対応するデータへの読み取り専用アクセスを、アプリケーションに与えます。printcap への書き込みアクセスはサポートされていません。

/etc/ttys

SunOS 4.x ではこのファイルは廃止されました。utmp ファイルの形式およびアクセスメカニズムが著しく異なるため、/etc/ttysutmp ファイルの間の関係に依存するプログラムは、Solaris 2.x リリースでは働きません。動的にリンクされるアプリケーションには、ttyslot を使用してください (静的にリンクされるアプリケーションには無効です)。

/etc/ttytab

SunOS 4.x では、このファイルは /etc/ttys に取って代わりました。SunOS 5.x では廃止されました。互換性は提供されていません。

/etc/utmp、/var/adm/wtmp

これらのファイルには、whowritelogin などのコマンドに関連するユーザ情報とアカウント情報が入っています。Solaris 2.x では、これらのファイルはそれぞれ一対のファイルで置き換えられました。たとえば、/etc/utmp/var/adm/utmp/var/adm/utmpx で、/var/adm/wtmp/var/adm/wtmp/var/adm/wtmpx で置き換えられました。これらのファイルのどちらかをオープンしようとしたアプリケーションは、それに対応する 2 つのファイルを連結したものを受け取ることになります。


注 -

これらのファイルへのシンボリックリンクはサポートされなくなりました。つまり、アプリケーションが /etc/utmp または /var/adm/wtmp へのリンクを作成し、シンボリックリンクをオープンしようとすると、その open() コールは失敗します。