部分linux版本的EasyConnect安装后无法直接使用,本项目在安装基础上进行修改,以使其能够运行。
正常安装你的学校/公司/组织对应版本的EasyConnect并尝试启动。
如果能够正常使用,那无需执行本项目。
如果你遇到:启动后没有出现界面/尝试连接一段时间后闪退 等现象,则本项目可能有所帮助。
我以v7.6.3版本为基准编写的本项目,供参考
(安装后版本可在 /usr/share/sangfor/EasyConnect/resources/conf/version.xml
中查看)
执行前确保已经安装了git和bash。
之后在合适位置终端执行如下操作:
git clone https://github.com/du33169/EasyConnect-linux-fix.git
cd EasyConnect-linux-fix
bash ./EasyConnect-fix.sh
对于中国大陆用户,也可使用gitee上的镜像:
git clone https://gitee.com/du33169/EasyConnect-linux-fix.git
cd EasyConnect-linux-fix
bash ./EasyConnect-fix.sh
运行时会要求输入sudo密码(终端不会显示,输入后回车),该密码用于获取root权限,将会用且仅用于:
- 复制文件到EasyConnect安装目录
- 访问和修改EasyConnect启动器.desktop文件
- 提供EasyMonitor等程序需要的权限
安全警告:询问用户得到的sudo密码将以明文写入/usr/share/sangfor/EasyConnect/RunEasyConnect.sh以避免每次启动EasyConnect时终端询问密码。如果有安全需求请谨慎使用。
完成后可正常使用启动器快捷方式启动EasyConnect。
如果需要卸载补丁,可使用uninstall参数执行安装脚本:
bash ./EasyConnect-fix.sh uninstall
以下为该fix项目的原理。如果脚本在你的发行版无法正常工作,可以参考这部分原理并手动操作。
(EasyConnect-linux的安装位置固定为 /usr/share/sangfor/EasyConnect
)
根据DotIN13这篇博客,EasyConnect正常运行需要libpango、libpangocairo、libpangoft软件包的1.0版本,与系统安装的版本不符。通过下载软件包并将其中中EasyConnect需要的运行库data.tar.xz/usr/lib/x86_64-linux-gnu/*.so.0.4200.3
以及*.so.0
提取,并直接复制到EasyConnect的安装目录下即可解决依赖问题(复制操作需要权限)。
需要指出的是,其中的*.so.0.4200.3文件是真正的运行库,而同名的*.so.0则是指向对应运行库的软链接。在本项目中,需要的动态库已经位于patch目录下。
考虑到软链接在压缩、git拉取等操作时很容易失效,并且指向的只是同一目录下的库文件,本项目附带的patch目录中直接将各个*.so.0.4200.3重命名为对应*.so.0。这样就不需要使用软链接。
DotIN13文章中通过定时启动服务的方式经过实践很难把握时机,Hagb的这篇笔记指出ECAgent.log中出现 cms client connect failed
时为一个关键时刻。此时启动sslservice(/usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh
)即可正常连接。
patch中的RunEasyConnect.sh即解决上述问题的辅助启动脚本,以该脚本代替 /usr/share/sangfor/EasyConnect/EasyConnect
可执行文件即可正常启动。
关于最后while循环的笔记:经过实验sslservice只需启动一次,无需重复;但RunEasyConnect.sh在启动ssl服务后需要等待EasyConnect主进程结束,否则会造成闪退。常用的wait
命令未起效果,此处暂时采用while循环检测EasyConnect进程并sleep的方法。
EasyConnect的启动器文件安装至 /usr/share/applications/EasyConnect.desktop
,为了简化启动EasyConnect时的操作,fix脚本修改该文件并将执行前述辅助启动脚本的命令写入(修改操作需要权限),这样就可在启动器以常规方式启动EasyConnect,无需终端运行脚本。