台式机,X86的CPU,为适配国产化,装了达梦、东方通等。为方便远程,需要装深信服,找银河麒麟对接人员拿到安装包,分别是X86和X64两个版本。
本机是X64版本,故安装X64版本包,银河麒麟居然是ubuntu的内核,所以用dpkg安装即可。
可是却无法打开,没反应。
故用命令行打开。却报错
故障描述
点击桌面图标后弹出“错误报告”对话框。在命令行运行时出现以下错误:
$ /usr/share/sangfor/EasyConnect/EasyConnect
Gtk-Message: 14:54:34.831: Failed to load module "canberra-gtk-module"
(EasyConnect:14016): Pango-ERROR **: 14:54:35.047: Harfbuzz version too old (1.3.1)
追踪与中断点陷阱 (核心已转储)
解决方案
基于该GitHub issue中的内容,本问题是由于electron版本太老,而系统中某些库(libpango)的版本太新导致的不兼容现象。
要解决该问题,首先要安装旧版本的库文件(.so文件)。但Ubuntu 20.04的apt源中并没有旧版本。所以我们只能安装Ubuntu 18.04的包,但最好要以一种不会影响其他程序的方式。
但是现在官网已经无法搜索Ubuntu18的包,所以我打包放在这里给大家下载:
https://download.csdn.net/download/luhputu520/88411864
- 将其中的动态库文件解压至
/usr/local/lib/easyconnect(在每个安装包的\usr\lib\x86_64-linux-gnu目录下)
- 完成后,其中应包含以下内容:
$ ls -l /usr/local/lib/easyconnect
总用量 448
lrwxrwxrwx 1 root root 25 7月 24 15:11 libpango-1.0.so.0 -> libpango-1.0.so.0.4000.14
-rw-r--r-- 1 root root 313264 8月 22 2018 libpango-1.0.so.0.4000.14
lrwxrwxrwx 1 root root 30 7月 24 15:19 libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0.4000.14
-rw-r--r-- 1 root root 51096 8月 22 2018 libpangocairo-1.0.so.0.4000.14
lrwxrwxrwx 1 root root 28 7月 24 15:16 libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0.4000.14
-rw-r--r-- 1 root root 87904 8月 22 2018 libpangoft2-1.0.so.0.4000.14
- 然后创建一个脚本代替原来EasyConnect的可执行文件,使其使用我们准备的这些库。在
/usr/local/bin/easyconnect
文件中写入以下内容,并为此文件添加执行权限。
#!/bin/bash
export LD_LIBRARY_PATH=/usr/local/lib/easyconnect:$LD_LIBRARY_PATH
/usr/share/sangfor/EasyConnect/EasyConnect "$@"
- 在命令行使用
/usr/local/bin/easyconnect
就应该能正常打开EasyConnect啦。但为了方便,我们再更改下桌面图标启动的文件。将/usr/share/applications/EasyConnect.desktop
复制到/usr/local/share/applications/
中,并Exec
选项中的可执行文件替换为我们创建的脚本即可。
其他小问题
- 关闭时进程不能正常退出。可使用kill或htop等命令向最顶层的进程发送sigterm信号即可使其退出。
- DNS问题。有时EasyConnect会导致系统的DNS不可用,原因未知,但重启EasyConnect可以解决。另外,EasyConnect会每5秒覆盖一次
/etc/resolv.conf
文件,任何自定义设置都会被覆盖(太沙雕了)。它似乎有自己的DNS服务器,但没能成功启动。我尝试过将系统服务systemd-resolve
停止以让出53端口,但这样会导致EasyConnect的服务报错,然后VPN连接会在不久后自动中断。