在Ubuntu 20.04上运行EasyConnect(华工VPN)

创建时间:2020/7/25 上午10:23:29
编辑时间:2020/7/25 下午1:35:12
作者: huww98@163.com (huww98@163.com)
分类:Linux

近日我将主力操作系统换为了Ubuntu 20.04,总体体验还是不错的,但最大的一个问题就是华南理工大学的VPN客户端EasyConnect运行时会闪退。无法连入学校内网还是有诸多不便,本文就记录下该问题的解决方案。这个解决方案应该也适用于很多基于electron的应用程序在Ubuntu 20.04下闪退的问题。

故障描述

点击桌面图标后弹出“错误报告”对话框。在命令行运行时出现以下错误:

$ /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的包,但最好要以一种不会影响其他程序的方式。首先,去packages.ubuntu.com搜索并下载如下软件包:libpango-1.0-0libpangocairo-1.0-0libpangoft2-1.0-0,将其中的动态库文件解压至/usr/local/lib/easyconnect,完成后,其中应包含以下内容:

$ 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连接会在不久后自动中断。

当然,本文所述方案也只是权宜之计。还希望学校能早日更新客户端,以彻底解决此问题。


返回文章列表

评论

登录 / 注册 后发布评论