방금 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
이 문제를 해결하려면 libs를 찾을 수 있는 위치를 알려줘야 합니다 . /usr/lib
의 적절한 파일에 대한 심볼릭 링크를 넣거나 직접 검색하도록 /usr/local/lib
지시할 수 있습니다 .ldconfig
echo /usr/local/lib | sudo tee -a /etc/ld.so.conf.d/local.conf
그런 다음 실행하여 sudo ldconfig
캐시를 업데이트합니다.
그리고 아마도 libs가 잘못된 디렉토리에 있는 이유를 알아내려고 노력할 수도 있습니다.
답변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'd했을 때 얻은 것은 다음과 같습니다 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)