LDCONFIG(8)

名称
ldconfig - 共有ライブラリのキャッシュを設定する

書式
ldconfig [-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 で認識されます。

-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 つあります。 素早い検索のためにヒント集合を作成することに加えて、 共有オブジェクトが共有ライブラリを安全に読み込むことができる ディレクトリの集まりを特定することも、その役割です。

環境変数
OBJFORMAT
    /etc/objformat (後述) に優先し、 -aout と -elf のどちらがデフォルトであるかを決定します。 設定されている場合、値は ‘aout’ もしくは ‘elf’ のいずれかである必要があります。

関連ファイル
/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 付きで起動した場合のためにディレクトリ名を格納します。
/etc/objformat
    -aout と -elf のどちらがデフォルトであるかを決定します。 存在する場合、 ‘OBJFORMAT=aout’ か ‘OBJFORMAT=elf’ のいずれかの 1 行から成る必要があります。

関連項目
ld(1), link(5)

歴史
ldconfig ユーティリティは SunOS 4.0 で初めて現れました。 現在の形は、 FreeBSD 1.1 からです。

バグ
-aout 指定時には、実行されないセキュリティチェックがあります (例えば、追加されたディレクトリの root の所有権)。