解決manjaro更新後"pacman: error while loading shared libraries"

前言

用了manjaro兩個多月,一直很穩定,一大早看到了168個包要更新,想也沒想就點了yes,結果就遇到了傳說中的滾掛,因爲頭一次遇到這種問題,花了一天的時間才解決,中間也走了很多彎路,必定要記錄一下此次可貴的經歷。linux

解決:pacman: error while loading shared libraries: libidn2.so.4: cannot open shared object file: No such file or directory

這個錯誤的意思是:libidn2.so.4這個共享文件缺失。git

解決思路

因此最簡單的解決方法就是:github

  1. 缺失的這個文件原來在哪一個目錄下?
  2. 去哪找找到這個缺失的文件?

1、

先解決第一個問題,我用的方法比較暴力,tty下在根目錄用find查詢libidn2spa

sudo -i             // 進入root模式
cd /                // 進根目錄
find -name libidn2*   // 查詢以libidn2爲開頭的文件或目錄

在衆多的搜索結果裏,我鎖定了這個目錄:/usr/lib/code

clipboard.png
cd 到這個目錄後發現果真沒有libidn2.so.4這個文件ip

2、

在網上搜索「libidn2」,找到官網後下載最新版本的安裝包,根據本身的系統版本選擇相應文件進行下載->傳送門
clipboard.png
我下載的是.gz格式的,因爲我是在別的系統下載包到U盤而後拷到這個系統的,因此還須要一些操做U盤的指令。get

1. 未插入u盤前,檢查本身的硬盤分區狀況

fdisk -l

clipboard.png

2. 插入之後,再執行上述命令,會發現多了一個設備,記住這個/dev/sdb1

clipboard.png

3. 在/mnt下新建usb目錄做爲u盤的掛載點

mkdir /mnt/usb

4. 而後將/dev/sdb1 掛載到/mnt/usb目錄下

mount /dev/sdb1 /mnt/usb/

5. cd到/mnt/usb下就能看到u盤裏的文件了

cd mnt/usb/

3、

1. 將u盤裏預先下載好的壓縮包解壓縮

tar -xf libidn2-latest.tar.gz

2. 進入u盤裏的/usr/lib,注意,不是根目錄下的那個

cd /usr/lib

3. 拷貝缺失的文件到/usr/lib

cp libidn2.so.4 /usr/lib/

4. 從新運行pacman進行中更新,此步須要聯網進行

pacman -S libidn2 --force
pacman -Syu

附:個人libidn文件github地址
參考博客博客

總結

  1. 此次修復系統的體驗仍是很可貴的,學到了不少命令,也感謝臧琛與李宜衡的無私幫助。
  2. 更新系統前必定要去官網看看log,無腦點yes,滾掛是遲早的事,此次更新我也是在官網的論壇上發現有很多人遇到了一樣的問題,纔在評論區找到了解決辦法->傳送門
相關文章
相關標籤/搜索