LDCONFIG(8) | FreeBSD System Manager's Manual | LDCONFIG(8) |
名称
ldconfig — 共有ライブラリのキャッシュを設定する書式
ldconfig | [ -32][ -aout | -elf][ -Rimrsv][ -f hints_file][ directory | file ...] |
解説
ldconfig ユーティリティは、ダイナミックリンカが、複数のディレクトリから利用可能な共有ライブラリを素早く捜し出すために使う“ヒント”の集合を準備するために使われます。コマンドは、組み込みのシステムディレクトリとコマンドラインで指定された任意の ディレクトリ (を指定された順番) で共有ライブラリを探し、その結果をシステムファイルに保存します。これは、ダイナミックリンカが要求された共有ライブラリを読み込む際のディレクトリ検索操作オーバヘッドをあらかじめ払っていることになります。 コマンドラインにて指定するファイル名は共有ライブラリを検査するディレクトリを含むことが期待されます。各ディレクトリのパス名は行の先頭から始まる必要があります。空行およびコメント文字‘ #
’から始まる行は無視されます。ヒントファイルに追加可能とするために、ファイル名は lib*.so.[0-9] というパターンであることが必要です。
セキュリティ上の理由から、誰でも書き込み可能またはグループ書き込み可能なディレクトリと、 root が所有しないディレクトリに対しては、警告メッセージを生成してスキップします。ただし、 -i オプションが存在する場合は、例外です。
共有ライブラリは、実行されようとするプログラムによって必要とされるならば、利用可能なものが自動的に読み込まれることになります。これは、実行形式に検索パスを保存する必要性を無くします。
LD_LIBRARY_PATH 環境変数は、キャッシュから使用するディレクトリ (や、その順序関係) を上書きしたり、共有ライブラリを探す追加のディレクトリを指定するために使われます。 LD_LIBRARY_PATH は、共有ライブラリを読み込む必要がある時、ダイナミックリンカによって検索されるディレクトリパスのリストをコロン‘:’で区切って指定します。これは、 ld(1) における -L オプションと、実行時点では等価です。
ldconfig ユーティリティは典型的にはブート時の手続きのひとつとして実行されます。
以下のオプションが ldconfig で認識されます。
- -32
- 32 ビットバイナリの実行をサポートする 64 ビットのシステムで 32 ビット ABI 共有ライブラリのためのヒントを生成します。
- -aout
- a.out 形式の共有ライブラリに対するヒントを生成します。
- -elf
- ELF 形式の共有ライブラリに対するヒントを生成します。
- -R
- 以前に設定したディレクトリを再度検索します。以前作成したヒントファイルをオープンし、ヘッダからディレクトリリストを取り出します。コマンドラインに指定したパス名も処理します。これが、パラメータ無指定時のデフォルト動作です。
- -f hints_file
- 標準のファイルの代りに、特定のヒントファイルを読み込んだり、更新したり、その両方を行ったりします。このオプションは、テストのために提供されています。
- -i
- 安全ではないモードで実行します。セキュリティチェックは実行されません。
- -m
- ヒントファイルの内容を指定されたディレクトリで見つかったものに置き換える代りに、新しいディレクトリの内容を“併合 (merge)”します。以前の ldconfig の実行によってヒントファイル内に記録されているディレクトリも、新しい共有ライブラリのために再び検索されます。
- -r
- 現在のヒントファイルの中身について、標準出力に表示します。ヒントファイルは変更されません。ヒントファイル中のディレクトリリストが組み込まれます。
- -s
- 共有ライブラリのために、システムの組み込みディレクトリ (“/usr/lib”) を検索しません。
- -v
- 冗長モードに切り替えます。
セキュリティ
セット uid (set-user-Id) プログラムのアドレス空間に共有ライブラリを読み込む時には、特別の注意をしなければなりません。そのようなプログラムがプログラムの所有者以外によって実行される時はいつでも、ダイナミックリンカはヒントファイルからだけ共有ライブラリを読み込みます。特に、 LD_LIBRARY_PATH は、ライブラリを探すためには使われません。従って、ldconfig の役割には 2 つあります。素早い検索のためにヒント集合を作成することに加えて、共有オブジェクトが共有ライブラリを安全に読み込むことができるディレクトリの集まりを特定することも、その役割です。関連ファイル
- /var/run/ld.so.hints
- a.out ダイナミックリンカの標準ヒントファイル。
- /var/run/ld-elf.so.hints
- ELF ダイナミックリンカの標準ヒントファイル。
- /etc/ld.so.conf
- 伝統的な設定ファイルであり、 -aout 付きで起動した場合のためにディレクトリ名を格納します。
- /etc/ld-elf.so.conf
- 伝統的な設定ファイルであり、 -elf 付きで起動した場合のためにディレクトリ名を格納します。
- /var/run/ld-elf32.so.hints
- /var/run/ld32.so.hints
- -32 で呼び出すためのディレクトリ名を含む従来の設定ファイル。
歴史
ldconfig ユーティリティは、SunOS 4.0 ではじめて登場しました。現在の形は、 FreeBSD 1.1 からです。バグ
-aout 指定時には、実行されないセキュリティチェックがあります (例えば、追加されたディレクトリの root の所有権)。March 19, 2013 | FreeBSD |