同じライブラリの 2 つのバージョンに対してリンクされたプログラムですか?

同じライブラリの 2 つのバージョンに対してリンクされたプログラムですか?

私は 2 つのシステムを持っています。どちらも Debian Jessie 8.4 を実行しており、どちらも open-vm-tools がインストールされています。ファイルは両方とも同一です。しかし、一方の vmtoolsd は、ファイルは同一であるにもかかわらず、古い libicu にリンクしており、次のようになります。

vmtoolsd: error while loading shared libraries: libicui18n.so.44: cannot open shared object file: No such file or directory

障害が発生したサーバーの ldd 出力は次のとおりです。

root@asterisk:/usr/lib/x86_64-linux-gnu#   ldd /usr/bin/vmtoolsd
        linux-vdso.so.1 (0x00007ffec070c000)
        libvmtools.so.0 => /usr/local/lib/libvmtools.so.0 (0x00007fed5ba5e000)
        libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007fed5b85a000)
        libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fed5b607000)
        libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fed5b405000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fed5b0f6000)
        libicui18n.so.52 => /usr/lib/x86_64-linux-gnu/libicui18n.so.52 (0x00007fed5ace4000)
        libicuuc.so.52 => /usr/lib/x86_64-linux-gnu/libicuuc.so.52 (0x00007fed5a966000)
        libicudata.so.52 => /usr/lib/x86_64-linux-gnu/libicudata.so.52 (0x00007fed590f9000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fed58dee000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fed58aed000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fed588d7000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fed586ba000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fed5830f000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fed58107000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fed57ed0000)
        libicui18n.so.44 => not found
        libicuuc.so.44 => not found
        libicudata.so.44 => not found
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fed57ccc000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007fed57ac4000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fed57856000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fed5bced000)

このシステムでのみ、libicui18n.so.52 にリンクされるだけでなく、libicui18n.so.44 にもリンクされます ?!?! 他のシステムには奇妙な依存関係はありません。libicu52 と open-vm-tools はすでに再インストールしました。ファイル libicui18n.so.4 はサーバーのどこにも見つかりません。

この行動の理由は何でしょうか?

答え1

/usr/local/lib/libvmtools.so.0おそらく Debian 6 ( が含まれていました) で行われたビルドの残りである を取得していますlibicu44。 それを名前変更して邪魔にならないようにすると、vmtoolsdはそのライブラリを適切に見つけられるはずです。

関連情報