将钉钉deb转rpm

DingTalk Fedora Packager#

把官方钉钉 Linux .deb 包重新打成 Fedora 可安装的 .rpm。

这个项目不是通用 deb -> rpm 转换器,只处理钉钉包,并固化了 Fedora 上实际踩到的兼容问题。

处理代码#

![[build_dingtalk_rpm.py]]

背景#

官方钉钉 Linux 包主要面向 Debian/Ubuntu 系发行版。直接原样转换成 RPM 后,在 Fedora 上会遇到几个典型问题:

  • 菜单入口执行 /opt/apps/com.alibabainc.dingtalk/files/Elevator.sh,它会走钉钉自带的预加载逻辑。
  • 包内旧版 libm.so.6 会遮住 Fedora 系统库,导致 GLIBC_2.38、GLIBC_2.43 等符号找不到。
  • dingtalk_dll.so、libconference_new.so 带有 executable stack 标记,Fedora 会拒绝加载。
  • RPM 如果声明拥有 /usr/bin、/usr/share/applications 这类系统目录,会和 filesystem 包冲突。

这里的处理思路参考了 zhullyb/dingtalk-for-fedora,并整理成一个可以直接处理本地 .deb 的脚本。

已验证版本#

本次实际处理并验证通过的钉钉版本:

com.alibabainc.dingtalk_8.1.0.6021101_amd64.deb

生成并验证通过的 Fedora RPM:

com.alibabainc.dingtalk-8.1.0.6021101-4.x86_64.rpm

验证环境为 Fedora 44 x86_64,glibc 2.43。其他钉钉版本可以用脚本尝试处理,但需要重新验证启动和会议等核心功能。

环境依赖#

构建依赖:

sudo dnf install python3-rpm rpm cpio xz patchelf binutils tar

运行依赖会写进生成的 RPM,安装时由 dnf 自动处理: