一直以来,人们普遍怀疑瞩目等“国产“云会议系统在界面,功能上有剽窃国外的Zoom.us的嫌疑,但无证据。本文从瞩目的Ubuntu客户端入手,详细证明了瞩目的Zoom血统。
疫情之下,学校要进行云教学,要安装瞩目客户端。打开官网,兴奋地发现瞩目居然有Linux版本,即所谓自主知识产权的Ubuntu Kylin 版本。于是在尝试安装的同时探索了瞩目客户端。
我使用的是 Manjaro Linux 19.0, Kernel 5.5, XFCE 4.14 惠普ZBook 15 (intel 集成显卡). 官网安装包zhumu_2.5.360133.0226_amd64.deb
。
Manjaro 是基于ArchLinux的,所以先把Debian系的DEB安装包debtap一下。
debtap zhumu_2.5.360133.0226_amd64.deb
得到了ArchLinux的.tar.xz 安装包,然后直接pacman。
sudo pacman -U zhumu-2.5.360133.0226-1-x86_64.pkg.tar.xz
然而,这个包依赖于这个东东。
~/Documents/packages/TXZ » sudo pacman -U zhumu-2.5.360133.0226-1-x86_64.pkg.tar.xz felix@felix-zbook
[sudo] password for felix:
loading packages...
resolving dependencies...
:: There are 6 providers available for opencl-nvidia:
:: Repository extra
1) opencl-nvidia-340xx 2) opencl-nvidia-390xx 3) opencl-nvidia-418xx 4) opencl-nvidia-430xx 5) opencl-nvidia-435xx
6) opencl-nvidia-440xx
Enter a number (default=1):
胡闹!我英特尔的显卡要装Nvidia的OpenCL和utils!
我当时就真的瞎选了一个装上了,还装了Nvidia的Cuda,结果,所有的Qt程序全打不开了!。于是赶紧卸载了这些Nvidia,一切恢复正常。
无奈之下,试试在不安装Nvidia驱动的情况下手动安装瞩目吧……
先解开tar包。
tar xvf zhumu-2.5.360133.0226-1-x86_64.pkg.tar.xz
里面opt,usr 两个文件夹,先进usr看看。
~/Documents/packages/TXZ » tree ./usr felix@felix-zbook
./usr
├── bin
│ └── zhumu -> /opt/zhumu/ZhumuLauncher
└── share
├── applications
│ └── Zhumu.desktop
├── doc
│ └── zhumu
│ └── changelog.gz
├── mime
│ └── packages
│ └── zhumu.xml
└── pixmaps
├── application-x-zhumu.png
└── Zhumu.png
8 directories, 6 files
这个usr 小巧得tree 都这么简单。./usr/bin 里的瞩目客户端是一个指向/opt/zhumu/ZhumuLauncher
的符号链接。剩下的是一些桌面文件,changelog,mime types, 图标之类。
那就去看看/opt/。ls一下发现居然有这么多Qt的文件。我们GTK果然更简单纯洁(Qt大佬勿喷)。ls如下:
audio libQt5Gui.so.5.9.6 libQt5Svg.so libquazip.so.1
config-dump.sh libQt5Network.so libQt5Svg.so.5 libquazip.so.1.0.0
dingdong1.pcm libQt5Network.so.5 libQt5Svg.so.5.9 libturbojpeg.so
dingdong.pcm libQt5Network.so.5.9 libQt5Svg.so.5.9.6 libturbojpeg.so.0.1.0
Droplet.pcm libQt5Network.so.5.9.6 libQt5WebChannel.so platforminputcontexts
egldeviceintegrations libQt5OpenGL.so libQt5WebChannel.so.5 platforms
generic libQt5OpenGL.so.5 libQt5WebChannel.so.5.9 platformthemes
getmem.sh libQt5OpenGL.so.5.9 libQt5WebChannel.so.5.9.6 Qt
iconengines libQt5OpenGL.so.5.9.6 libQt5WebEngineCore.so qt.conf
icudtl.dat libQt5Positioning.so libQt5WebEngineCore.so.5 qtdiag
imageformats libQt5Positioning.so.5 libQt5WebEngineCore.so.5.9 QtGraphicalEffects
leave.pcm libQt5Positioning.so.5.9 libQt5WebEngineCore.so.5.9.6 QtQml
libfaac1.so libQt5Positioning.so.5.9.6 libQt5WebEngine.so QtQuick
libicudata.so libQt5PrintSupport.so libQt5WebEngine.so.5 QtQuick.2
libicudata.so.56 libQt5PrintSupport.so.5 libQt5WebEngine.so.5.9 QtWebChannel
libicudata.so.56.1 libQt5PrintSupport.so.5.9 libQt5WebEngine.so.5.9.6 QtWebEngine
libicui18n.so libQt5PrintSupport.so.5.9.6 libQt5WebEngineWidgets.so qtwebengine_devtools_resources.pak
libicui18n.so.56 libQt5Qml.so libQt5WebEngineWidgets.so.5 QtWebEngineProcess
libicui18n.so.56.1 libQt5Qml.so.5 libQt5WebEngineWidgets.so.5.9 qtwebengine_resources_100p.pak
libicuuc.so libQt5Qml.so.5.9 libQt5WebEngineWidgets.so.5.9.6 qtwebengine_resources_200p.pak
libicuuc.so.56 libQt5Qml.so.5.9.6 libQt5Widgets.so qtwebengine_resources.pak
libicuuc.so.56.1 libQt5Quick.so libQt5Widgets.so.5 ring.pcm
libQt5Core.so libQt5Quick.so.5 libQt5Widgets.so.5.9 timezones
libQt5Core.so.5 libQt5Quick.so.5.9 libQt5Widgets.so.5.9.6 translations
libQt5Core.so.5.9 libQt5Quick.so.5.9.6 libQt5X11Extras.so version.txt
libQt5Core.so.5.9.6 libQt5QuickWidgets.so libQt5X11Extras.so.5 xcbglintegrations
libQt5DBus.so libQt5QuickWidgets.so.5 libQt5X11Extras.so.5.9 zcacert.pem
libQt5DBus.so.5 libQt5QuickWidgets.so.5.9 libQt5X11Extras.so.5.9.6 zhumu
libQt5DBus.so.5.9 libQt5QuickWidgets.so.5.9.6 libQt5XcbQpa.so ZhumuLauncher
libQt5DBus.so.5.9.6 libQt5Script.so libQt5XcbQpa.so.5 zhumulinux
libQt5Gui.so libQt5Script.so.5 libQt5XcbQpa.so.5.9 zhumu.sh
libQt5Gui.so.5 libQt5Script.so.5.9 libQt5XcbQpa.so.5.9.6 zopen
libQt5Gui.so.5.9 libQt5Script.so.5.9.6 libquazip.so ZXMPPROOT.cer
有意思的文件有这几个:
zhumu
: 应该是核心模块ZhumuLauncher
: 启动器zhumulinux
: 是一个bash脚本,跟日志有关zhumu.sh
: 调试器,自带echo说明:This is debug mode of zhumu client. Once crash, zhumu will generate core dump under this mode.
(这是瞩目客户端的调试模式。如果客户端崩溃了,瞩目会用这个模式取得core dump文件。
看来有时还会Segment fault: Core dumped!
啊。
先运行一下./zhumu 试试:
./zhumu
得到了一个错误:
zoom started.
QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled
./zhumu: symbol lookup error: /home/felix/Documents/packages/TXZ/opt/zhumu/imageformats/libqico.so: undefined symbol: _ZdlPvm, version Qt_5
是一个OpenGL错误和符号错误。这不是重点。上面一条信息更有意义:
zoom started
名为“瞩目”核心却是Zoom。真令人想起前几年 红芯浏览器的Chromium核心。
然后运行一下 那个launcher:
./ZhumuLauncher
输出一堆。这里paste一下前面的几行:
ZhumuLauncher started.
cmd line:
$HOME = /home/felix
export SSB_HOME="/home/felix/.Zhumu_Cloud_Meetings"; export QSG_INFO=1; export LD_LIBRARY_PATH=/home/felix/Documents/packages/TXZ/opt/zhumu; /home/felix/Documents/packages/TXZ/opt/zhumu/zhumu ""
zoom started.
Linux Client Version is 2.5.360133.0226
QSG_RENDER_LOOP is
XDG_CURRENT_DESKTOP = XFCE; GDMSESSION = xfce
Graphics Card Info:: 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
Zoom package arch is 64bit, runing OS arch is x86_64
AppIconMgr::systemDesktopName log Desktop Name: xfce
qt.scenegraph.general: QSG: basic render loop
qt.scenegraph.general: Using sg animation driver
libpng warning: iCCP: known incorrect sRGB profile
qt.scenegraph.general: texture atlas dimensions: 1024x512
没错,第5行,第10行:
zoom started.
Zoom package arch is 64bit, runing OS arch is x86_64
进一步加深了瞩目与zoom的血缘关系。
这个运行是正确的,看图:
登录,完全正常使用。
不知道你是否发现了一个事实:
我没有安装那些瞩目依赖的Nvidia包,但是瞩目却能正常使用!
现在手动安装。先把包里的opt里的zhumu文件夹复制到/opt/
cp -r ./opt/zhumu /opt/
然后用MenuLibre编辑一个desktop文件,不多叙述了。
在menu里启动,登录,正常使用。
为此,我下载了zoom。PS:人家本来就有Arch安装包,根本不用debtap。
解压。
tar xvf zoom_x86_64.pkg.tar.xz
然后对比一下文件名。
ls ./zhumuExtracted/opt/zhumu/ > 1.txt
ls ./zoomExtracted/opt/zoom/ > 2.txt
diff 1.txt 2.txt
diff 如下:
6a7
> Embedded.properties
7a9
> getbssid.sh
11a14
> json
22a26
> libmpg123.so
103a108,109
> meeting_chat_chime.pcm
> meeting_raisehand_chime.pcm
121d126
< RegisterProtocol
122a128,129
> root_cert_zpbxcacert.pem
> sip
128,131c135,138
< zhumu
< ZhumuLauncher
< zhumulinux
< zhumu.sh
---
> zoom
> ZoomLauncher
> zoomlinux
> zoom.sh
133d139
< ZXMPPROOT.cer
注意这几项:
128,131c135,138
< zhumu
< ZhumuLauncher
< zhumulinux
< zhumu.sh
---
> zoom
> ZoomLauncher
> zoomlinux
> zoom.sh
不就是改个名嘛~~~(PS:还有把脚本的变量名改一下)
看一组图。
登录界面,左边Zoom右边瞩目。(瞩目把被和谐的Google和Facebook登录选项去掉了)
SSO 登录,左边Zoom右边瞩目。
主界面,左边Zoom右边瞩目。(PS: Schedule 图标上的数字都是19)
设置。瞩目(右边)用的好像是老版本的zoom,前几年我用的zoom的界面和今天的瞩目一模一样。两个设置的项目和内容是相同的,默认的秒数也都是10.
其他内容依次类推。
红芯对chromium,瞩目对zoom。瞩目客户端是基于Zoom的fake copy。大致上与红芯浏览器与chromium的关系相似。