
ちょうどArchをインストールし、ワイヤレス接続を確立しました。追加パッケージをインストールしたいので、pacmanを使ってみました。
しかし、私が使用するすべてのコマンドに対して次のエラーが発生します。
pacman:共有ライブラリのロード中にエラーが発生しました。 libcurl.so.4:共有オブジェクトファイルを開くことができません。そのファイルやライブラリはありません。
ただし、/usr/local/libには次のファイル/フォルダがあります。
libcurl.a libcurl.a libcurl.so libcurl.so.4 libcurl.so.4.2.o pkgconfig
それでは、パックマンにこのファイルをどのように割り当てますか?
答え1
libcurl.*
なぜあなたのファイルがあるのかわかりませんが、/usr/local/lib
私のファイルはどこ/usr/lib
にあるべきかです。ldconfig
見つからないことを確認するには、次のようにします。
ldconfig -p | grep curl
何も印刷しないでください。もしそうなら、バージョン番号を確認してください。間違ったバージョンを受け取った可能性があります。
この問題を解決するには、これらのライブラリが見つかる場所を教えてくださいldconfig
。/usr/lib
そのファイルへのシンボリックリンクを追加/usr/local/lib
または直接ldconfig
検索できます。
echo /usr/local/lib | sudo tee -a /etc/ld.so.conf.d/local.conf
その後、アップデートキャッシュを実行しますsudo ldconfig
。
たぶんライブラリが間違ったディレクトリにある理由を見つけようとします。
答え2
libcurl
明らかに確認されていないので、探している場所(見つからない場所)を見つける必要があります/usr/local/lib
。まず、他のライブラリがないことを確認するためにlddを実行することをお勧めします。
ldd $(which pacman)
これがファイルの場所を見つけるため strace
の次のツールになりますので、すでにインストールしておいてください。libcurl
strace -e open -o strace.log $(which pacman)
このコマンドを実行した後にどのless strace.log
ファイルを開こうとしているかを確認すると、そのファイルを探す場所を決定するのに役立ちます。迅速で汚い修正は、/usr/local/lib
探している場所から適切なファイルをコピー(またはシンボリックリンク)することです。
これは私がstraceしたときに得るものですwget
:
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/x86_64-linux-gnu/libidn.so.11", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/etc/wgetrc", O_RDONLY) = 3
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
open("/usr/share/locale/\"en_US/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/\"en/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/\"en_US/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/\"en/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en\"/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en\"/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)