Arch滚动升级导致的一些问题,比如库问题


最近很奇怪,arch来了两次大的滚动升级,但是我也有段时间没用这个,一直用的Ubuntu,昨天解决了elementary上的一些问题后,今天就想着把arch上的一些问题也解决掉,搞定了一直想弄的anbox后,发现,我去,怎么设置什么的都无法打开了

果断去/usr/share/applications里找到设置的desktop,打开看到执行命令为

gnome-control-center --overview

输入终端看看日志

image.png

谷歌了一番,之前找到的方案什么的,说要重新安装gnome3

但是这工程太繁重,我是不会碰的,

后来去官方搜了一波,果然有一样的问题

于是按上面的说法,补齐旧包,但是 arch旧包重来就不会保存.

一不留神,看到了这兄弟的博文:http://www.tuicool.com/articles/iInamuj

他说:

降级

我的第一反应,是fcitx升级导致的,这可能是升级后的版本的bug,于是执行以下命令把找到的与fcitx相关的包通通给降级到4.2.7.4:

$ cd /var/cache/pacman/pkg
$ sudo pacman -U fcitx-4.2.7-4-x86_64.pkg.tar.xz
$ sudo pacman -U fcitx-gtk3-4.2.7-4-x86_64.pkg.tar.xz
$ sudo pacman -U fcitx-gtk2-4.2.7-4-x86_64.pkg.tar.xz
$ sudo pacman -U fcitx-qt4-4.2.7-4-x86_64.pkg.tar.xz

输入 fcitx -d 启动fcitx,报错:

(ERROR-1583 /build/src/fcitx-4.2.7/src/lib/fcitx/ime.c:281) IM: open /usr/lib/fcitx/fcitx-keyboard.so fail libicuuc.so.50: cannot open shared object file: No such file or directory

某个共享库找不到,但我看到这个共享库有一个较高的版本,于是,来个偷懒的办法,创建一个软链接看能不能蒙混过关:

$ cd /usr/lib
$ sudo ln -s libicuuc.so.51.1 libicuuc.so.50

继续出错:

(ERROR-1634 /build/src/fcitx-4.2.7/src/lib/fcitx/ime.c:281) IM: open /usr/lib/fcitx/fcitx-keyboard.so fail /usr/lib/fcitx/fcitx-keyboard.so: undefined symbol: unorm_normalize_05

好吧,这个库的v51版本竟然不向后兼容v50版本,看来蒙不过去。。于是,查了一下这个库所在的包:

$ pacman -Qo /usr/lib/libicuuc.so.51.1
=> /usr/lib/libicuuc.so.51.1 is owned by icu 51.1-1

看到这个库属于ICU包,那看来只有降级整个包到v50版本了。但根据archlinux的哲学,这种旧包它是不会保存的,还好我们有ARM(Archlinux Rollback Machine)。。。

继续降级

从 ARM 的 extra 仓库顺利找到了这个旧包 icu-50.1.1-1-x86_64.pkg.tar.xz ,于是迫不及待下载下来,用 pacman -U 降级安装。

心想这下总OK了吧,实事证明,我想多了,重启fcitx,继续报错:

(ERROR-880 /build/src/fcitx-4.2.7/src/lib/fcitx/module.c:61) Module: open /usr/lib/fcitx/fcitx-vk.so fail libicule.so.51: cannot open shared object file: No such file or directory
(ERROR-880 /build/src/fcitx-4.2.7/src/lib/fcitx/ui.c:191) UI: open /usr/lib/fcitx/fcitx-classic-ui.so fail libicule.so.51: cannot open shared object file: No such file or directory

又是找不到共享库。。在archlinux的 网站 上一通乱搜,发现这个找不到的共享库 libicule.so.51 属于ICU包的v51版本。。我心里的草泥马真是万千奔腾:见过有依赖的,但没见过这样依赖的,同时依赖于同一个包的两个不同的版本!!

----------------------------------------------------END------------------------------------------------------------

有点大同小异的感觉,按他的说法,我试了第一种,软链接

cd /usr/lib
sudo ln -s libicuuc.so.59.1 libicuuc.so.58

但是运行又出现一个错,抱着试试的心态,又软链接一次,

sudo ln -s libicudata.so.59.1 libicudata.so.58

很幸运我的包支持向下兼容,到此,问题解决.

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - Arch滚动升级导致的一些问题,比如库问题


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.