Arch のインストールとワイヤレス接続の設定が完了しました。追加のパッケージをインストールしたかったので、pacman を使用してみました。
しかし、使用するすべてのコマンドで次のエラーが発生します。
pacman: 共有ライブラリのロード中にエラーが発生しました: libcurl.so.4: 共有オブジェクト ファイルを開けません: そのようなファイルまたはライブラリはありません。
しかし、/usr/local/lib には次のファイル/フォルダーがあります。
libcurl.a libcurl.a libcurl.so libcurl.so.4 libcurl.so.4.2.o pkgconfig
では、pacman にこれらのファイルを指定するにはどうすればよいですか?
答え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)