ldconfigがlibext2fs.so.2からlibselinux.so.1へのシンボリックリンクを生成するのはなぜですか?

ldconfigがlibext2fs.so.2からlibselinux.so.1へのシンボリックリンクを生成するのはなぜですか?

strace私が見つけた動作(glibc)を使用するとldconfig理解できません。

lstat("/usr/lib/libext2fs.so.2", {st_mode=S_IFLNK|0777, st_size=16, ...}) = 0
unlink("/usr/lib/libext2fs.so.2")       = 0
symlink("libselinux.so.1", "/usr/lib/libext2fs.so.2") = 0

共有オブジェクトライブラリext2fslibext2fs.so.2)が必要ですlibselinux.so.1

ldconfigは何をすべきかをどうやって知ることができますか?この静的バイナリ/usr/bin/ldconfigにこれらの動作がハードコーディングされていることは私が見るには非論理的です。そうですね。ただし、構成ファイルは/etc/ld.so.confミステリーを解決するのに役立ちませんでした。

私のデプロイツール(Arch Linux)では、これらすべてがより混乱して疑わしい理由は、このファイルが属するパッケージを見つけることができないことです。

$ pkgfile /usr/lib/libselinux.so.1

$pkgfile /usr/lib/libext2fs.so の間はパッケージは表示されません。

出力core/e2fsprogs

だから私の質問は具体的には次のようになります。

  1. ここでlibselinux.so.1の役割は何ですか?
  2. ldconfigは、対応するシンボリックリンクを生成することをどのように決定しますか? (btw。broken e2fsck

答え1

/usr/lib/libselinux.1ライブラリ名が誤って変更されている可能性があります/usr/lib/libext2fs.so.2。これは止まらないLD構成予想される名前は、ライブラリのファイル名ではなくライブラリの内容に含まれるため、「正しい」名前を連結します。これは、ライブラリをいくつかのディレクトリにコピーして要求することで確認できます。LD構成このディレクトリのみを更新してください。

Debian 9と同じ:

$ mkdir /tmp/foo
$ cp -aL /lib/x86_64-linux-gnu/libselinux.so.1 /tmp/foo/libmytest.so.2
$ ls -l /tmp/foo/*
-rw-r--r-- 1 test test 155400 Sep 24  2017 /tmp/foo/libmytest.so.2
$ /sbin/ldconfig -v -n /tmp/foo
/tmp/foo:
    libselinux.so.1 -> libmytest.so.2 (changed)
$ ls -l /tmp/foo/*
-rw-r--r-- 1 test test 155400 Sep 24  2017 /tmp/foo/libmytest.so.2
lrwxrwxrwx 1 test test     14 Jun  5 23:33 /tmp/foo/libselinux.so.1 -> libmytest.so.2

ちなみにlibselinuxソフトウェア処理用の汎用ライブラリです。 SELinuxlscpおよびコマンドも通常、そのオプションに関連付けられてmvいます。ps-Z

関連情報