解决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,滚挂是迟早的事,此次更新我也是在官网的论坛上发现有很多人遇到了一样的问题,才在评论区找到了解决办法->传送门
相关文章
相关标签/搜索