自从在公司的开发环境切换到Manjaro(2018-12-15)已经有两个月了。除了Dock 老是 屏幕锁定时不正确的被显示出来(参见连接)之外,基本没有任何问题了。
刚过完年,下午上班划水发现PackManager又有更新了,随手就是“Apply”一点,就切到后台开始忙工作上的事情了,没一会就完全把后台正在滚动升级这事给忘记了。大概十几分钟后,正调着BUG呢,电脑突然就当机了,Alt+F2也完全没有响应。因为BUG正调到关键时候,没多想脑一抽就按了重启键。
重启过后问题就来了,显示器上有鼠标显示,但一直卡在黑屏界面,进不了桌面。当时才一下反应过来,我貌似是正在更新呢,这突然重启不得GG了!
先试了下Alt+F2,能进入tty界面。但是上面有一行报错提示:
error while loading shared libraries: libidn2.so.4: cannot open shared object file: No such file or directory.
这报错我也先不管了,感觉能进tty应该没太大问题。
sudo startx
看是不是 X
没起来,结果报了一大堆错,没用。sudo pacman -Syu
,看能不能解决,这时候上面的那行报错又出来了,pacman
命令都用不了了。看来问题的症结就在这个 libidn2.so.4
上了,果断在手机上一搜 manjaro+libidn2.so.4 关键词:
第一个不就是跟我一样的问题吗?进去一看,果然,是因为不正常的升级导致旧版本libidn2
库文件中的 /usr/lib/libidn2.so.4
文件不见了。
既然缺这个文件,那我们就把它找回来。
我们到 pacman
升级下载的缓存里去找看看有没有 libidn2
的旧包:
[kaka@kaka-pc ~]$ ls -al /var/cache/pacman/pkg/libidn2*
-rw-r--r-- 1 root root 113244 1月 24 17:10 /var/cache/pacman/pkg/libidn2-2.1.0-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 114976 2月 20 15:38 /var/cache/pacman/pkg/libidn2-2.1.1-2-x86_64.pkg.tar.xz
这里我们看到有两个 libidn2
包,第二个应该是今天更新时刚下载下来的,第一个就是上一次更新的旧版本包了。
我们把这个旧包 copy 到临时目录,解压并搜索 libidn2.so.4
这个文件: