Ubuntu 23.10 钉钉无法启动解决方法

上周五升级到 Ubuntu23.10 后,整体很丝滑,也发现了一些小问题:

    1. alacritty + tmux 选择复制,tmux server 崩溃,且是必现,purge 重装后问题解决,旧版本是我自己编译的。
    1. 钉钉无法启动了,这是我始料不及的。

启动报错:

1➜  files ./Elevator.sh
2ubuntu
3ubuntu branch
4preload_libs=
5./com.alibabainc.dingtalk: symbol lookup error: /lib/x86_64-linux-gnu/libcairo.so.2: undefined symbol: FT_Get_Color_Glyph_Layer

先看看 libcairo.so什么情况,正常:

1➜  x86_64-linux-gnu ls -al libcairo.so*
2lrwxrwxrwx 1 root root      13 Sep 24 06:39 libcairo.so -> libcairo.so.2
3lrwxrwxrwx 1 root root      21 Sep 24 06:39 libcairo.so.2 -> libcairo.so.2.11800.0
4-rw-r--r-- 1 root root 1334120 Sep 24 06:39 libcairo.so.2.11800.0
5➜  x86_64-linux-gnu pwd
6/lib/x86_64-linux-gnu
7➜  x86_64-linux-gnu

阿里那么大的企业,官方既然提供 deb 包,主流发行版升级的时候,最起码的测试都不做,实在是无法理解。更加要命的是,找个反馈渠道都困难,以前我是在桌面端登录的,里面有个反馈问题入口,也反馈过一些双屏和退出不正常的问题,差不多算解决了(不能期望太高)。

这次桌面端登录不了,只能去 iOS 端反馈问题。 入口在"我的">"客服与帮助">"在线客服"(滑到最底下,生怕人找到 🤮)> 输入"人工"(排队等 16 分钟 🤷🤷‍♂️)。

为什么是输入"人工",看文档找到的。不信你输入"转人工"试试!半点智能都没有。

过程如下:

dingtalk help

dingtalk dialog

dingtalk response

本来觉得已经提供关键报错信息了,只要对方给 Linux 客户端同学看看,不出意外肯定能解决,没想到还要我录屏写邮件,提供版本号。

我不禁想问,难道阿里没有使用 Ubuntu 的同学吗?测试集最起码要包含下主流系统吧...

看错误提示,感觉不是很复杂,于是尝试自己解决,求人不如求己,解决方法如下:

1. 找到目标目录

1➜  7.1.0-Release.31011 pwd
2/opt/apps/com.alibabainc.dingtalk/files/7.1.0-Release.31011

2. 移走/删除目标.so 文件

移走/删除目标.so 文件(建议 mv,万一这个操作方法不行,还可以复原)

1➜   7.1.0-Release.31011 mv  libfreetype.so.6* ~
2mv: cannot remove 'libfreetype.so.6': Permission denied
3mv: cannot remove 'libfreetype.so.6.16.1': Permission denied
4➜  7.1.0-Release.31011 sudo mv  libfreetype.so.6* ~
5[sudo] password for mephisto:

3. 测试

测试启动正常:

 1➜  ~ /opt/apps/com.alibabainc.dingtalk/files/Elevator.sh
 2ubuntu
 3ubuntu branch
 4preload_libs=
 5Run Main is_gpu=0 is_zygote=0 is_render=0 cmd : ./com.alibabainc.dingtalk
 6[2023/10/18 14:17:09:ERROR:gray_sdk_manager.cpp(118)] [gray_sdk] GraySdkManager::IsGraySdkStarted uninitialized
 7[2023/10/18 14:17:09:WARNING:gray_sdk_manager.cpp(208)] [gray_sdk] GraySdkManager::GetGraySwitch module:cspace key:calendar_jsapi_cross_platform
 8[2023/10/18 14:17:09:ERROR:gray_sdk_manager.cpp(118)] [gray_sdk] GraySdkManager::IsGraySdkStarted uninitialized
 9[2023/10/18 14:17:09:WARNING:gray_sdk_manager.cpp(208)] [gray_sdk] GraySdkManager::GetGraySwitch module:mail key:enable_mail_navigation_notify_button
10[2023/10/18 14:17:09:ERROR:gray_sdk_manager.cpp(118)] [gray_sdk] GraySdkManager::IsGraySdkStarted uninitialized
11[2023/10/18 14:17:09:WARNING:gray_sdk_manager.cpp(208)] [gray_sdk] GraySdkManager::GetGraySwitch module:cspace key:change_memo_color_mac_38596632
12[2023/10/18 14:17:09:INFO:gray_switch_lemon.cpp(456)] [gray_sdk] auto route to before login interface, module:general,key:enable_dingpan_sync_20220606_common
13[2023/10/18 14:17:09:ERROR:gray_sdk_manager.cpp(118)] [gray_sdk] GraySdkManager::IsGraySdkStarted uninitialized
14[2023/10/18 14:17:09:WARNING:gray_sdk_manager.cpp(208)] [gray_sdk] GraySdkManager::GetGraySwitch module:general key:enable_dingpan_sync_20220606_common
15...... 此处省略一万行

4. 怎么找到方法的

先关键字搜索:

google search

前面几个搜索结果不是很理想,不是删除,就是各种软链接,我怕影响系统稳定性。

直到点开 arch wiki, 报错都一模一样,只是换了个软件名而已。

  • 方法就是找到问题.so文件,不让 dingtalk 读到

这样就不会使用钉钉的libfreetype.so(此时,使用系统自带的 libfreetype.so,系统的各种 .so文件之间不会存在兼容问题,毕竟自己人), 也就不会触发钉钉和系统依赖库不兼容的问题。

  • FT_Get_Color_Glyph_Layer 是个什么鬼

是 OpenType fonts 获取一些基础信息用的, 参考 文档

  • Glyph Layer 大模型解释

    「Glyph Layer」通常是指在图形设计或字体排版中,用于表示文字或符号的图层。在字体排版中,每个字形(glyph)都可以被视为一个独立的对象,这些对象被放在各自的图层上,这就是所谓的「Glyph Layer」。这样可以让排版更加灵活,更容易进行编辑和修改。在设计软件中,例如 Adobe Illustrator 或 QuarkXPress,都有关于图层的设置,可以让用户对每个单独的元素进行分层编辑和管理。

怎么感觉和图片的各种图层操作差不多,不得不说大模型适合理解各种概念,比自己搜查理解快。

题外话,此次升级飞书是没有任何问题的。钉钉的 Linux 客户端还有进步空间,只能说不是最差的,毕竟 Linux 微信客户端垫底,像个残疾一样。

最后修改于: Wednesday, October 18, 2023
欢迎关注微信公众号,留言交流。

相关文章:

翻译: