Arch Linux pacman 找不到 libcrypto.so.1.1 libcurl.so.4
最近更新完Arch後執行pacman -Sy
時出現錯誤
pacman: symbol lookup error: /usr/lib/libcurl.so.4: undefined symbol: SSLCTXsetalpnprotos
或
pacman: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file
這時候判斷應該是pacman出問題了,查詢一下pacman使用什麼函數庫依賴
$ sudo ldd $(which pacman)
ldd指令會將程式用到的函數庫列表出來並顯示出對應的位址及檔案路徑,可以透過此方法看看是不是有哪些函數庫缺少的:
linux-vdso.so.1 (0x00007fff4a3ff000) libalpm.so.7 => /usr/lib/libalpm.so.7 (0x00007f16be091000) libc.so.6 => /usr/lib/libc.so.6 (0x00007f16bdce4000) libcurl.so.4 => not found libgpgme.so.11 => /usr/lib/libgpgme.so.11 (0x00007f16bdab1000) libarchive.so.12 => /usr/lib/libarchive.so.12 (0x00007f16bd81c000) libcrypto.so.1.1 => not found /lib/ld-linux-x86-64.so.2 (0x00007f16be2bd000) libassuan.so.0 => /usr/lib/libassuan.so.0 (0x00007f16bd202000) libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007f16bcfff000) libacl.so.1 => /usr/lib/libacl.so.1 (0x00007f16bcdf6000) libattr.so.1 => /usr/lib/libattr.so.1 (0x00007f16bcbf1000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f16bc9c7000) liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f16bc7a4000) libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007f16bc594000) libz.so.1 => /usr/lib/libz.so.1 (0x00007f16bc37e000) libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f16bc17a000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f16bbf5e000)
上面結果的確是有看到2個函數庫是找不到的,先從libcurl.so
是由哪個套件所產生的
pacman -Ql|grep libcurl.so
利用Q
查詢,並加上l
將所有套件內的檔案全部列出,再透過grep
將符合關鍵字的內容列出,結果如下:
curl /usr/lib/libcurl.so
原來是curl
套件包含libcurl.so
函數庫,可能會有新版的,查詢一下:
pacman -Qu curl
在Q
後加個u
會將該套件是否有新的更新列出來
curl 7.54.0-2 -> 7.54.0-3
果然有新版的,那就更新一下
sudo pacman -Ss core/curl
上面指令主要是將curl
套件更新,更新之時也會順帶將所有套件依賴一起更新
resolving dependencies... looking for conflicting packages... Packages (1) curl-7.54.0-3 Total Installed Size: 1.39 MiB Net Upgrade Size: 0.02 MiB
此時就按下y
更新吧!經過一段時間後更新完成後,依照此方式將剩下的libcrypto.so
也一起更新,更新完成後再重新開機後,執行pacman
應該就解決問題。
上述的做法只是一個例子,如果還有其他套件有類似的問題時也能這麼處理。
The post Arch Linux pacman 找不到 libcrypto.so.1.1 libcurl.so.4 appeared first on 可丁丹尼 @ 一路往前走2.0.