安卓平板运行PC级WPS和VS Code的探索
Termux是一个在安卓设备上模拟Linux终端的APP。借助这个终端,可以运行许多Linux程序;更进一步的,我们还可以在其上安装发行版并配置桌面环境,进而运行一些PC端应用(在华为最新的几款平板上,这个功能叫做“PC应用引擎”)。下面是探索的步骤
一、Termux的安装
可以在下面的地址获得apk,在安卓设备上通过apk的方式安装Termux。
安装以后,点击APP图标即可进入终端界面。初次进入时APP会自动下载一些依赖库,等待一两分钟即可完成下载安装。之后,就可以像普通的Linux终端那样对这个APP进行使用了。
二、termux的apt软件源更新+proot安装
如题。
最新版的Termux中包含了termux-change-repo
这一指令,可以通过一个图形化的方式选择合适的软件源(如下图)。通过键盘方向键选择切换镜像组,随后选择中国大陆的镜像站即可(按空格选中,按回车确认,按左右方向键切换OK/Cancel)。
更新完软件源以后,使用下面的指令安装proot-distro
这个容器软件,之后我们会使用它进行Linux发行版的安装。
1 | apt install proot-distro |
(其实理论上不做后面的步骤也可以,Termux自身已经包含了大量的Linux程序和运行时环境,可以进行一些如C++程序编译、python开发、web网站假设等一系列工作。安装Linux发行版主要是想装图形界面)
三、安装Fedora发行版
如下图,proot-distro
是一个Linux PRoot容器的管理软件,包含许多指令。
- 使用
proot-distro list
可以列出当前可用的Linux发行版(包括已安装的和未安装的) - 使用
proot-distro install <发行版名称>
可以安装特定发行版 - 使用
proot-distro remove
可以删除特定发行版 - 要进入一个已经安装好的发行版,可用使用
proot-distro login <发行版名称> --user <用户名>
指令(其中--user
参数是可选的。不加这一参数则登录到root用户)
下面我们来安装Fedora发行版:
1 | proot-distro install fedora |
这将会下载大约几十MB的文件,大约需要几分钟时间。
之后,使用下面的指令即可登录到刚刚安装的fedora发行版:
1 | proot-distro login fedora |
Fedora系统配置非root用户、软件源、bashrc设置、网络设置等过程和普通的Linux发行版一样,在网络上也有许多教程,此处略过。
四、安装LXQt桌面环境并配置VNC服务
在众多Linux桌面环境中,LXQt算是一个比较轻量级的存在了。其前身是LXDE,也是一个非常轻量级的桌面,随后有人使用Qt框架对其进行了重写,保留了原本的轻量级特性,但引入了更加现代的界面设计。
VNC是一种使用RFB(Remote Framebuffer)协议的屏幕画面分享及远程操作软件,分为服务端和客户端,在此我们使用它进行图形界面的显示。
上述这些软件在Fedora里的安装方法如下:
1 | # 首先更新dnf缓存 |
安装过程需要持续几十分钟,期间需要下载1G左右的数据。
安装完成后,我们还需要对VNC服务进行一些配置:
1、修改密码。终端输入下面这行指令,然后根据提示直接在终端内输入要使用的密码即可。
1 | vncpasswd |
2、修改位于~/.vnc/xstartup
处的VNC配置文件,将下面这几行内容写入文件当中:
1 | xrdb $HOME/.Xresources |
并赋予上述文件可执行权限(chmod +x ~/.vnc/xstartup
)
3、创建VNC启动脚本。在家目录下创建文件start_lxqt_with_vncserver.sh
并写入下面的内容:
1 | !/bin/bash |
并赋予上述文件可执行权限(chmod +x ~/start_lxqt_with_vncserver.sh
)。
这个启动脚本中,vncserver -kill :2
和rm /tmp/.X*-lock
两行内容是为了避免先前启动的VNC服务未关闭造成的一些问题,vncserver -depth 24 :2
表示以24位色彩深度在:2
端口上启动VNC服务。
为了使用这个桌面,我们也需要在设备上安装一个VNC客户端。在VNC viewer官网上提供了安卓版的下载链接,从这里我们下载VNC viewer并安装即可。
4、启动VNC服务。这一步直接运行刚刚我们编写好的启动脚本即可(./start_lxqt_with_vncserver.sh
)。控制台会有一些输出,大致如下:
5、启动VNC客户端。现在我们暂时退出Termux的终端(记得挂后台,别被清理了),打开刚刚安装的VNC viewer,点击右下角的加号创建一个新的session,其中主机地址填写localhost:2
或127.0.0.1:2
,密码填写前面第一步中设置的密码,即可连接。
启动后的界面大致是下面这个样子。VNC viewer内支持鼠标和键盘操作(就像PC那样)。
五、WPS arm linux版的安装过程
参考: https://www.linuxcapable.com/how-to-install-wps-office-on-fedora-linux/
首先从WPS官网上下载Linux版的WPS安装包(rpm格式): https://www.wps.cn/product/wpslinux#
在这以后,直接使用rpm -ivh <package_name.rpm>
并不能安装,因为一些依赖库的缺失会导致报错。但是可以使用下面的指令安装:
1 | # 首先切到WPS安装包的下载目录 |
这会自动安装依赖库,并同时从本地rpm文件中安装WPS。
之后,使用wps
指令即可启动WPS主程序。
但是更推荐的是启动LXQT桌面并通过VNC view连接到这个桌面以后,通过LXQT桌面管理器的launcher启动WPS主程序。
六、VS Code的安装和启动
和WPS相反,VScode的安装非常简单,只需要一行指令:
1 | sudo dnf install code |
要启动vscode,可以直接使用code
指令。然而在我的termux-fedora环境中,这一指令并不能正确启动vscode,添加--verbose
选项以后得到的报错信息中提到:
1 | [cyclin@localhost]~$ code --verbose |
按这个报错信息的说法,我需要给chrome沙箱文件/usr/share/code/chrome-sandbox
赋予4755权限。当我这么做以后,问题依然没有解决,推测可能是termux的chroot环境所导致的。
所以我们可以尝试绕过上述chrome沙箱,直接启动vscode。指令如下:
1 | code --no-sandbox |
可以把上述指令封装为vscode
指令以便下一次启动。
七、一些报错的解决:
(1)tumux的curl报错(cannot link executable "Curl": library "libssl.so.1.1" not found
):
根据 https://github.com/termux/termux-packages/issues/10871 ,首先在 $PREFIX/lib下创建libssl.so.1.1的软连接
1 | cd $PREFIX/lib |
从而保证curl的依赖库可以被link。
随后使用apt full-upgrade进行全局更新。
(2)使用proot-distro安装linux发行版以后dnf更新缓存失败、curl无法解析主机名( “curl error (6) could not resolve host”,但是可以根据ip获取信息)的解决方法:
经过排查,大约是DNS配置的问题。尝试在/etc/resolv.conf中增加了一些DNS服务器,但是错误仍未解决。
最后,在/etc/hosts中将一些网站的DNS写死(yum软件源用https://mirrors4.tuna.tsinghua.edu.cn,在hosts中添加这一主机并配置ip为101.6.15.130)
1 | 101.6.15.130 mirrors4.tuna.tsinghua.edu.cn |
这样至少可以保证更新软件源缓存时是没有问题的。
之后安装一下net-tools这个软件包,DNS的问题似乎就解决好了。