前言用了manjaro两个多月,一直很稳定,一大早看到了168个包要更新,想也没想就点了yes,结果就遇到了传说中的滚挂,由于头一次遇到这种问题,花了一天的时间才解决,中间也走了不少弯路,一定要记录一下这次难得的经历。解决:pacman: error while loading shared libraries: libidn2.so.4: cannot open shared object file: No such file or directory这个错误的意思是:libidn2.so.4这个共享文件缺失。解决思路所以最简单的解决方法就是:缺失的这个文件原来在哪个目录下?去哪找找到这个缺失的文件?一、先解决第一个问题,我用的方法比较暴力,tty下在根目录用find查询libidn2sudo -i // 进入root模式cd / // 进根目录find -name libidn2* // 查询以libidn2为开头的文件或目录在众多的搜索结果里,我锁定了这个目录:/usr/lib/cd 到这个目录后发现果然没有libidn2.so.4这个文件二、在网上搜索“libidn2”,找到官网后下载最新版本的安装包,根据自己的系统版本选择相应文件进行下载->传送门 我下载的是.gz格式的,由于我是在别的系统下载包到U盘然后拷到这个系统的,所以还需要一些操作U盘的指令。1. 未插入u盘前,检查自己的硬盘分区情况fdisk -l 2. 插入以后,再执行上述命令,会发现多了一个设备,记住这个/dev/sdb13. 在/mnt下新建usb目录作为u盘的挂载点mkdir /mnt/usb4. 然后将/dev/sdb1 挂载到/mnt/usb目录下mount /dev/sdb1 /mnt/usb/5. cd到/mnt/usb下就能看到u盘里的文件了cd /mnt/usb/三、1. 将u盘里预先下载好的压缩包解压缩tar -xf libidn2-latest.tar.gz2. 进入u盘里的/usr/lib,注意,不是根目录下的那个cd /usr/lib3. 拷贝缺失的文件到/usr/libcp libidn2.so.4 /usr/lib/4. 重新运行pacman进行中更新,此步需要联网进行pacman -S libidn2 –forcepacman -Syu附:我的libidn文件github地址参考博客总结这次修复系统的体验还是很难得的,学到了很多命令,也感谢臧琛与李宜衡的无私帮助。更新系统前一定要去官网看看log,无脑点yes,滚挂是早晚的事,这次更新我也是在官网的论坛上发现有不少人遇到了同样的问题,才在评论区找到了解决办法->传送门