web-dev-qa-db-ja.com

ldconfigエラー:シンボリックリンクではありません

実行中:

    Sudo /sbin/ldconfig

次のエラーが表示されます。

    /sbin/ldconfig: /usr/local/lib/ is not a symbolic link

ファイルを実行すると:

    file /usr/local/lib/
    /usr/local/lib/: directory

/usr/local/lib/の中には、私が使用する3つのライブラリがあります。ここでは、lib1lib2、およびlib3と呼びます。

さて、バイナリでlddを実行すると、結果は次のようになります。

    lib1.so => not found
    lib2.so => not found
    lib3.so => /usr/local/lib/lib3.so (0x00216000)

ただし、すべては/usr/local/lib/{lib1,lib2,lib3}.soと同じフォルダーにあります。

ldconfigを実行するたびに、同じエラーが表示されます。

/usr/local/lib/ is not a symbolic link

/usr/local/lib/etc/ld.conf.d/*.confで2回宣言されるべきだと思ったが、そうではない:

    Sudo egrep '\/usr\/local' /etc/ld.so.conf.d/*
    projectA.conf.old:/usr/local/projectA/lib
    local.conf:/usr/local/lib

ld.so.confには/etc/ld.so.conf.d/*.confのみが含まれるため、この*.oldは処理されず、/usr/local/projectA/libを参照します。

しばらくして、すべてのlib1とlib2を削除しました(ある時点で、バイナリのフォルダーでテストしました)。同じエラーが発生します。

36
Rodrigo Gurgel

Oracle 11R2クライアントでこの問題に遭遇しました。私が到着する前に、Oracleインストーラがこれを行ったか、誰かがここでそれを行ったかどうかはわかりません。 64ビットと32ビットではなく、すべて64ビットでした。

エラーは、libexpat.so.1がシンボリックリンクではなかったことです。

libexpat.so.1.5.2libexpat.so.1という2つの同一のファイルが存在することが判明しました。問題のあるファイルを削除し、1.5.2バージョンへのシンボリックリンクにすると、エラーがなくなりました。

よく知られた名前を現在のバージョンへのシンボリックリンクにしたいのは理にかなっています。これを行うと、古いライブラリになってしまう可能性は低くなります。

38
Dan Pritts

少なくとも質問の時点で解決しました。

尋ねる前にウェブで検索しましたが、決定的な解決策はありませんでした、このエラーの理由は次のとおりです:lib1.soとlib2.soはOKではありません。 lib3.soは64ビットライブラリです。少なくともそれは私のヒステシスです。

非常に残念なことに、ldconfigはライブラリをロードできなかったことを通知するクリーンなエラーメッセージを表示せず、ポンプするだけです。

ldconfig:/ folder_where_the_wicked_lib_is /はシンボリックリンクではありません

バイナリ上でlddで見つからないライブラリを削除したときに、これを解決しました。問題がどこにあるのかがわかりやすくなりました。

私のldバージョン:GNU ldバージョン2.20.51。最新バージョンの方がユーザーにより良いメッセージを持っているかどうかわかりません。

ありがとう。

5
Rodrigo Gurgel

以下のコマンドを実行しました。

export LD_LIBRARY_PATH=/usr/lib/

今では正常に動作しています。

2

ライブラリのパスを/etc/ld.so.confに含め、ldconfigを再実行してリストを更新する必要があります

他の可能性は、env変数LD_LIBRARY_PATHにライブラリへのパスを含め、実行可能ファイルを再実行することです。

有効なライブラリを指している場合は、シンボリックリンクを確認してください...

インクルードせずに、/ etc/ld.so.confにパスを直接追加できます...

実行ldconfig -pは、ライブラリがキャッシュに適切に含まれているかどうかを確認します。

2
alinsoar

シェルでの単純な実行:Sudo apt-get install --reinstall libexpat1
libxcbで同じ問題を解決-この方法で解決-非常に高速:)

0