Featured image of post Kubuntu 运行钉钉

Kubuntu 运行钉钉

💩 钉钉

Linux 钉钉

因为 公司申请 MacBook Pro 比较麻烦 不喜欢用 Windows 办公且喜欢折腾,所以很早之前就把公司的笔记本电脑装了 Linux 在日常使用。

之前使用的发行版是 Linux Mint,其实基本上都能满足需求:美观程度、软件兼容性等,但是不知道为什么钉钉开会看不到别人共享的屏幕。想着既然已经折腾了,干脆去找其他发行版试试,结果不小心跳了更大的坑。

一开始选了Pop!_OS,但是风格不是很喜欢,并且无法打开钉钉,就很快放弃了,转向了 Kubuntu,本来以为问题都是基于 Ubuntu 的发行版引入的,Kubuntu 基本就是 Ubuntu 总没问题吧?结果发现自己大错特错。

TL;DR: 问题不是发行版导致的,而是 glibc 2.41+ 和 Linux 内核新特性共同作用 及 Wayland 显示协议导致的。

无法启动

首先无法启动,点击应用后没有反应甚至没有报错。通过检索找到了这篇 Blog,按所述方法修复后能正常启动了。

Blog 中推荐的方案一用的是 execstack,但是实际上新系统中已经没有这个工具了,所以使用了方案二的 patchelf。

无法打开会议

正常打开后发现点击会议没有反应,为了查看日志,到应用目录下手动执行了启动脚本 sh,然后将相关日志喂给了 DeepSeek:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ERROR: ld.so: object './libgbm.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
...
--self-uid=613261782
ERROR: ld.so: object './libgbm.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object './libgbm.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
dll: /opt/apps/com.alibabainc.dingtalk/files/8.1.0-Release.6021101/libconference_new.so
/opt/apps/com.alibabainc.dingtalk/files/8.1.0-Release.6021101/libconference_new.so: cannot enable executable stack as shared object requires: Invalid argument
GetLibEntry instance failed
use_conf
error: entry is null

原因和解决方式看下来和上面那篇 Blog 是一样的:手动移除相关文件(libconference_new.so)的可执行栈标记。

无法共享屏幕

这个相比前两个原因“简单”一点,不涉及 Linux 的安全机制,“只”是钉钉没有适配 Wayland 协议而已,但是解决起来就很麻烦。因为 AI 会选择最“正确”的那个解决方案:不要用 Wayland……

最后还是自己检索找到了一个第三方的补丁:dingtalk-wayland-screenshare。手动执行编译(中间反复报错→喂给 AI →安装依赖→报下一个错……)后得到一个用于实现 hook 逻辑的 so 文件,根据说明修改了钉钉的启动脚本,把它塞到了 LD_PRELOAD 中,最后一切正常了。


以上一堆问题解决下来,发现其实保持最开始老老实实用 Mint 就能避免大部分问题:Linux 内核更新没那么激进 & 桌面协议还是 X11,等 Mint 都更新了钉钉应该也适配了。结果现在费时费力还要重新配置 keyd、输入法、指纹识别等一堆东西……

版权声明:本文为 CBC 原创,依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。