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搜索,更准确的答案立马就会出来,成为学者创新者们了解世界、发现问题、解决问题的得力助手。”
我不是谷歌吹,我说的都是像我这样爱折腾的科技实验者每天都可以验证的事实。
14.212.85.***某Linux用户觉得这篇文章很有帮助。
183.46.11.***某Android用户觉得这篇文章很有帮助。
北京市房山区某Linux用户觉得这篇文章很有帮助。
0.0真有趣
好吓人。请问manjaro滚挂是您自己长时间不更新导致的吗?manjaro可以像win10那样有更新就提醒并可以自动更新吗?什么是任意倭文?
不是滚挂,是搞挂。因为pacman/yaourt -Sy之后没有及时全盘滚动升级,导致部分新旧依赖与被依赖的包发生冲突。文中是全盘滚动升级之前pacman因为部分升级的缘故挂了。
debian:那么激进干嘛,不然坐下来喝杯咖啡(滑稽)
说过多少次,学生党就应该乖乖的去学习,弄你那个乱七八糟的博客,高考又不会加分,有什么用?先把语言学正,b站少看,二次元什么的忘掉又不会被人打死,时不时看看心理医生,不要自己不开心就让别人不快乐,那样病情只会加重。一定要听话!
然而你可以用Bing。。我直接搜icu-59.1-2-x86_64.pkg.tar.xz的,第三个选项卡就是Arch的下载链接,直接点就下下来了。。。
Google大坏蛋坏坏坏,还是国产的Bing好。嘿嘿。
推荐使用搜索引擎 DuckDuckGo 。