![抛物线(类似拱形)- ICU 更新导致某些程序需要两个不同版本的 ICU 库。两者均无法启动。无法重现](https://linux22.com/image/122400/%E6%8A%9B%E7%89%A9%E7%BA%BF%EF%BC%88%E7%B1%BB%E4%BC%BC%E6%8B%B1%E5%BD%A2%EF%BC%89-%20ICU%20%E6%9B%B4%E6%96%B0%E5%AF%BC%E8%87%B4%E6%9F%90%E4%BA%9B%E7%A8%8B%E5%BA%8F%E9%9C%80%E8%A6%81%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC%E7%9A%84%20ICU%20%E5%BA%93%E3%80%82%E4%B8%A4%E8%80%85%E5%9D%87%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8%E3%80%82%E6%97%A0%E6%B3%95%E9%87%8D%E7%8E%B0.png)
我跑抛物线(Arch Linux 的衍生版本,将非自由软件列入黑名单,并添加了许多其他软件)。最近 ICU 软件包从 v.59 更新到 v.60(ICU 软件包直接来自 Arch 的存储库,而不是来自 Parabola)。因此,Parabola 自己的存储库中的许多软件包需要针对新版本的 ICU 进行重建,包括 Ring-client-gnome 和 california。
我已经确认,在新的虚拟机上,“gnome-ring”和“california”都可以正常运行。 IRC 上的其他用户也报告了同样的情况。
然而,在我的个人机器上,“gnome-ring”和“california”都无法启动。除了不幸已损坏的旧虚拟机之外,我无法复制此问题。
奇怪的是,尽管 Ring-client-gnome 是为 ICU v60 构建的,但我似乎想要 v59 和 v60。例如,如果卸载 ICU,gnome-ring 将输出无法按预期找到“libicui18n.so.60”。但如果你安装了 ICU,它会输出找不到“libicui18n.so.59”。这没有任何意义,因为安装两个不同的 ICU 版本而不发生冲突是不可能的,所以我的安装似乎有问题。
有趣的是,无论你是否安装了 ICU,“california”总是会输出找不到“libicui18n.so.59”,尽管它是为 ICU v60 构建的。
安装了最新的 ICU 软件包 (60.1-1):
[user@hostname ~]$ gnome-ring
gnome-ring: error while loading shared libraries: libicui18n.so.59: cannot open shared object file: No such file or directory
[user@hostname ~]$ california
california: error while loading shared libraries: libicui18n.so.59: cannot open shared object file: No such file or directory
没有安装 ICU 软件包(加利福尼亚的那个是不是拼写错误):
[user@hostname ~]$ gnome-ring
gnome-ring: error while loading shared libraries: libicui18n.so.60: cannot open shared object file: No such file or directory
[user@hostname ~]$ california
california: error while loading shared libraries: libicui18n.so.59: cannot open shared object file: No such file or directory
一些更有用的输出:
[user@hostname ~]$ ldd /usr/lib/libring.so /usr/lib/libring.so.0 /usr/lib/libring.so.0.0.0 /usr/lib/ring/dring /usr/bin/gnome-ring /usr/bin/ring.cx | grep icu
libicuuc.so.60 => /usr/lib/libicuuc.so.60 (0x0000604eec817000)
libicudata.so.60 => /usr/lib/libicudata.so.60 (0x0000604ee9dca000)
libicuuc.so.60 => /usr/lib/libicuuc.so.60 (0x000069782c24c000)
libicudata.so.60 => /usr/lib/libicudata.so.60 (0x00006978297ff000)
libicuuc.so.60 => /usr/lib/libicuuc.so.60 (0x00006ea1e4d8a000)
libicudata.so.60 => /usr/lib/libicudata.so.60 (0x00006ea1e233d000)
libicuuc.so.60 => /usr/lib/libicuuc.so.60 (0x0000686de13da000)
libicudata.so.60 => /usr/lib/libicudata.so.60 (0x0000686dde98d000)
libicui18n.so.60 => /usr/lib/libicui18n.so.60 (0x0000603da97c4000)
libicuuc.so.60 => /usr/lib/libicuuc.so.60 (0x0000603da940b000)
libicui18n.so.59 => not found
libicuuc.so.59 => not found
libharfbuzz-icu.so.0 => /usr/lib/libharfbuzz-icu.so.0 (0x0000603da49ee000)
libicuuc.so.59 => not found
libicui18n.so.59 => not found
libicudata.so.60 => /usr/lib/libicudata.so.60 (0x0000603d9f05a000)
libicuuc.so.59 => not found
libicui18n.so.59 => not found
libicuuc.so.59 => not found
重症监护室版本:
[user@hostname ~]$ sudo pacman -Q icu
icu 60.1-1
/usr/lib/icu 的内容:
[user@hostname icu]$ ls -l
total 12
drwxr-xr-x 1 root root 46 Nov 22 14:16 60.1
lrwxrwxrwx 1 root root 4 Nov 12 09:33 current -> 60.1
lrwxrwxrwx 1 root root 20 Nov 12 09:33 Makefile.inc -> current/Makefile.inc
lrwxrwxrwx 1 root root 19 Nov 12 09:33 pkgdata.inc -> current/pkgdata.inc
/lib/libicu 的内容
[alex@LibrebootT400 lib]$ ls -la libicu*
lrwxrwxrwx 1 root root 18 Nov 12 09:33 libicudata.so -> libicudata.so.60.1
lrwxrwxrwx 1 root root 18 Nov 12 09:33 libicudata.so.60 -> libicudata.so.60.1
-rwxr-xr-x 1 root root 26825368 Nov 12 09:33 libicudata.so.60.1
lrwxrwxrwx 1 root root 18 Nov 12 09:33 libicui18n.so -> libicui18n.so.60.1
lrwxrwxrwx 1 root root 18 Nov 12 09:33 libicui18n.so.60 -> libicui18n.so.60.1
-rwxr-xr-x 1 root root 2762816 Nov 12 09:33 libicui18n.so.60.1
lrwxrwxrwx 1 root root 16 Nov 12 09:33 libicuio.so -> libicuio.so.60.1
lrwxrwxrwx 1 root root 16 Nov 12 09:33 libicuio.so.60 -> libicuio.so.60.1
-rwxr-xr-x 1 root root 55056 Nov 12 09:33 libicuio.so.60.1
lrwxrwxrwx 1 root root 18 Nov 12 09:33 libicutest.so -> libicutest.so.60.1
lrwxrwxrwx 1 root root 18 Nov 12 09:33 libicutest.so.60 -> libicutest.so.60.1
-rwxr-xr-x 1 root root 64616 Nov 12 09:33 libicutest.so.60.1
lrwxrwxrwx 1 root root 16 Nov 12 09:33 libicutu.so -> libicutu.so.60.1
lrwxrwxrwx 1 root root 16 Nov 12 09:33 libicutu.so.60 -> libicutu.so.60.1
-rwxr-xr-x 1 root root 203288 Nov 12 09:33 libicutu.so.60.1
lrwxrwxrwx 1 root root 16 Nov 12 09:33 libicuuc.so -> libicuuc.so.60.1
lrwxrwxrwx 2 root root 16 Nov 12 09:33 libicuuc.so.59 -> libicuuc.so.60.1
lrwxrwxrwx 2 root root 16 Nov 12 09:33 libicuuc.so.60 -> libicuuc.so.60.1
-rwxr-xr-x 1 root root 1799952 Nov 12 09:33 libicuuc.so.60.1
答案1
Parabola 有一个特殊的存储库,名为“无棱镜“其中包含许多强化的软件包,通常可以增强隐私。我忘记了我不久前已启用它进行测试。
禁用此存储库修复了 gnome-ring 和 california,这表明其中之一无棱镜包裹破损。设法将其范围缩小到一个损坏的依赖关系,这表明进化数据服务器是罪魁祸首。果然有非棱镜/进化数据服务器这是正常包后面的两个版本。
非棱镜/进化数据服务器现在正在重建队列中。如果这解决了问题,我会将这个问题标记为已解决。
答案2
这对我有用:
sudo ln /usr/lib/libicuuc.so.60 /usr/lib/libicuuc.so.59
(假设您的系统运行在 ICU v60 上。如果您使用的是 v59,则可能可以将 59 符号链接到 60。)