# 不会开发就不要开发

多数EasyConnect的Linux用户都遇到了一系列怪问题,在论坛发帖也鲜有回复,偶有客服搭话,也大多采用“您的系统不支持”、“我帮您查查”之类的托词推脱干系。

在网络遨游3个小时之后,总算找到了一些Workarounds,气不过,在此与大家分享。

# 版本不一致

在AUR安装最新版7.6.7之后,登陆时居然提示软件与服务器版本不一致,要求我“更新”。打开更新链接,下载了链接里的deb包,一安装,发现居然是降级到了7.6.3。也是不得不服。

如果你也遇到了同样的问题,首先需要到企业的EasyConnect下载页面下载对应版本的deb。由于各个企业服务端所用版本不同,所以下载页面都是由企业自行提供的。

# 使用debtap安装deb包

首先安装AUR包管理器yay。

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

然后使用yay安装debtap。

yay -S debtap

请确保系统中已经安装了bash、binutils、pkgfile和fakeroot这几项debtap的依赖。

如果你身在国内,建议给debtap换源,否则软件包列表下载速度会让你怀疑人生。

# /usr/bin/debtap
替换:http://ftp.debian.org/debian/dists
为:https://mirrors.ustc.edu.cn/debian/dists

替换:http://archive.ubuntu.com/ubuntu/dists
为:https://mirrors.ustc.edu.cn/ubuntu/dists/

执行更新命令,更新debtap的包列表。

sudo debtap -u

然后使用debtap转化刚才下载的deb包为Arch Linux软件包。

# 需要填写包名EasyConnect和证书类型
debtap <easyconnect>.deb
# 或者使用静默模式跳过问题
debtap -q <easyconnect>.deb

Arch Linux软件包会生成在当前目录,以.tar.xz/.tar.zst为后缀。此时使用pacman安装转化后的软件包。

sudo pacman -S <easyconnect>.tar.zst

# 不能启动

首先遇到的问题是不能启动。

此时cd到/usr/share/sangfor/EasyConnect

cd /usr/share/sangfor/EasyConnect
# 在终端运行EasyConnect
./EasyConnect

如果看到终端出错Harfbuzz version is too old,就代表系统的pango包版本过高,这是开发者没有更新软件的依赖所导致的。

由于不希望改变系统的运行库,我们可以把旧版的pango运行库放置到/usr/share/sangfor/EasyConnect,让EasyConnect能够调用。在没有进行额外操作的情况下,EasyConnect调用的是系统中的pango 1.44。

ldd EasyConnect | grep pango
	libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f9713518000)
	libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f971337e000)
	libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f97116d8000)

我们需要下载旧版的libpangolibpangocairolibpangoft的deb包,然后解压运行库文件到/usr/share/sangfor/EasyConnect。以下给出1.42的下载链接。

libpango下载地址

libpangocairo下载地址

libpangoft下载地址

下载deb包后,打开deb包中的data.tar.xz,提取data.tar.xz/./usr/lib/x86_64-linux-gnu/下的.so.0.so.0.4200.3文件到/usr/share/sangfor/EasyConnect

此时运行ldd命令输出如下。

ldd EasyConnect | grep pango
	libpangocairo-1.0.so.0 => /usr/share/sangfor/EasyConnect/./libpangocairo-1.0.so.0 (0x00007f16ce009000)
	libpango-1.0.so.0 => /usr/share/sangfor/EasyConnect/./libpango-1.0.so.0 (0x00007f16cde72000)
	libpangoft2-1.0.so.0 => /usr/share/sangfor/EasyConnect/./libpangoft2-1.0.so.0 (0x00007f16cc1cb000)

再从桌面打开EasyConnect,就能够正常启动了。

参考CNBLOG

# 登陆闪退

登陆后小图标闪动数秒后闪退,是由于svpnservice没有正常启动。

首先打开EasyConnect和一个终端,在终端输入:

sudo /usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh

登陆时,当登陆进度条运行至70%左右,在终端回车运行命令。

终端提示:

sslservice.sh start ...
start CSClient seccess!
start svpnservice seccess!

此时SSLVPN就能够正常连接了。

# 总结

开发的时候,还需多一点完美主义。