撸linux


Manjaro系统差点因libicuuc.so搞挂,幸得一神器妙手回春

archlinux系发行版非常激进,如果2个月不滚动升级的话,再安装一些新软件就会出现依赖库过时的问题。这个时候如果你去更新某个非常底层的依赖库,就会触发地雷,导致整个系统无法使用。碰到这种情况,新手都会怒骂“cnmd又滚挂了”,开始想念debian系发行版的各种好。

比如今天(2018.01.02)我安装了0ad游戏,启动的时候提示libicui18n.so依赖错误,于是用yaourt -S icu命令升级了icu,之后大麻烦来了——大量软件无法启动,甚至连pacman这个类似于ubuntu下apt的软件安装命令都失效。pacman依赖icu库,icu库是非常底层的库,依赖它的还有fcitx、qt5-base、kdelibs、libxml2等基础库和基础应用。真是牵一发而动全身,所有没有升级过的依赖icu库的软件全部作废,只有全盘升级,才可以拯救,然而全盘升级需要pacman命令,pacman命令却因为icu不兼容而无法使用,这就是让人绝望的“死循环”。

archlinux论坛发现也有人出现这样的问题,他的解决方法是插上U盘用livecd模式进行滚动升级,命令是pacman -r /mnt -Syu,意思是通过livecd对挂载的/mnt分区(即原系统根分区)进行滚动升级,这个方法我犹豫了半天没有采用。

后来找到另外一个很靠谱的答案,只需要下载icu-59.1-2-x86_64.pkg.tar.xz解包到/usr/lib,然后继续用pacman -Syuu命令全盘升级即可。

本来我以为archlinux这样的激进发行版,除非在本地电脑上有缓存备份,在网上是不可能有过时的软件包可供下载的,而且通过百度搜索icu-59.1-2-x86_64.pkg.tar.xz也确实找不到相关软件包,然而这只是误解!

通过一个神器——火眼金睛的谷歌搜索——我发现archlinux官方网站一直就有icu的早期软件包可供下载,下载了icu-59.1-2-x86_64.pkg.tar.xz这个包之后,再按照上面说的那个靠谱的答案,执行以下3条命令全盘滚动升级,终于解决了大麻烦。

mkdir -p ~/pkg/tmp && tar xJvf icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
sudo cp ~/pkg/tmp/usr/lib/libicu*.59 /usr/lib/
sudo pacman -Syyu

在Google镜像站技术推介网页《学者角度》上,我写了一段引言:

“对学术研究和技术创新来说,无法使用Google搜索的弊端显而易见。Google搜索结果的准确性人尽皆知,用百度或必应搜索不到前沿、偏门技术问题,尤其是英文相关问题答案的时候,只要使用Google搜索,更准确的答案立马就会出来,成为学者创新者们了解世界、发现问题、解决问题的得力助手。”

我不是谷歌吹,我说的都是像我这样爱折腾的科技实验者每天都可以验证的事实。

相关博文



发表评论

电子邮件地址不会被公开。