让你的手机变身Linux — Termux设置

Termux是一款在Android上运行的终端模拟器,内含了一个非常轻量的Linux环境。

目录

Termux是一款在Android上运行的终端模拟器,其中内含了一个非常轻量的Linux环境,并且使用apt做包管理器。最新的Termux已经不在Play Store上更新了,安装需要去Github或者官网。旧版本的Termux在使用apt的时候可能会碰到问题。

近来因为买了Surface Duo,在手机上稍微折腾了一下Termux,尝试是否能把手机变成Linux级别的生产力工具。结论当然是不可以,一方面性能不够,另一方面Termux上的包还是太少了,不过还是记录一下一些环境设置方法,供之后查阅。

另外,Termux支持通过proot包来安装完整的Linux系统,最有名的是TermuxArch。在安装完完整系统之后,理论上你的手机就已经变成完整的Linux电脑了!不过由于我并不需要那么多功能,我没有走这一条路线。

ssh客户端

在手机上使用ssh客户端还是非常实用的,这样可以随时随地监控各个电脑的情况,并且不怎么耗流量。在Termux里面安装ssh非常简单,直接

1
pkg install openssh # or apt install openssh, pkg=apt in Termux
SHELL

如果你像我一样主要通过SSH Key连接各主机,那么你可能需要安装Termux:API以便于从手机中拷入密钥到Termux中,还需要手动开一下ssh-agent服务。建议直接在.bashrc(可能需要新建)中加入以下内容

1
2
eval "$(ssh-agent -s)"
# ssh-add your_key
SHELL

然后如果你在服务器上有像我一样配置Powerline的话(可参考我之前的美化terminal的博客),你可以安装Termux:Styling这个app,然后在Termux中就可以选择Nerd Font了,非常不错!

Rust环境配置

Termux的仓库中直接有提供rust,因此可以直接

1
pkg install rustc-dev
SHELL

这个命令会顺带装上Clang编译器。

Python环境配置

我尝试的另一大内容就是在Termux里面搭建基本的Python环境。Termux只提供了Python的包,几乎没有提供其他任何包,因此需要手动安装。你可以直接选择安装Anaconda,但是目前由于兼容性的问题,Termux中无法运行很多给aarch64架构编译的文件,这个问题在之后也许会被Termux解决。

首先是安装python,直接pkg install python即可。在我这次安装的时候,Python已经直接是3.10的版本了,很不错。然后用get-pip.py脚本可以安装上pip:

1
2
3
pkg install wget
wget bootstrap.pypa.io/get-pip.py
python get-pip.py
SHELL

有了pip之后纯Python的包就可以直接装了,而用到Python扩展的包(如numpy)则需要编译器和对应的依赖项。编译器我在之前装Rust的时候顺便装上了,也可以直接通过pkg安装Clang(Termux仓库里只有Clang没有GCC)。

安装Numpy时如果系统里没有BLAS包,安装可以成功完成,但是会有警告,并且性能欠佳。这次我尝试给安装了一下OpenBLAS,过程还挺顺利的,命令如下

1
2
3
4
5
6
7
wget https://github.com/xianyi/OpenBLAS/releases/download/v0.3.18/OpenBLAS-0.3.18.tar.gz # choose your version
tar -xzf OpenBLAS-0.3.18.tar.gz
cd OpenBLAS-0.3.18

pkg install perl binutils # install dependencies
make -j4
make PREFIX=/data/data/com.termux/files/usr install
SHELL

安装好OpenBLAS之后再pip install numpy,这时Numpy会自动找到OpenBLAS。在有了Numpy之后,许多依赖于Numpy的包也很容易能装上了(如Cython、Pandas,但是Scipy装不了,因为Scipy需要Lapack和gfortran,这意味着需要把GCC的工具链导进来,这里我就懒得弄了。如果有需要的话一位Github老哥自己搭建了一个apt仓库,可以从那里安装)

之后我还尝试了安装Jupyter Notebook和matploblib / plotly

1
2
3
4
5
6
7
8
# install jupyter notebook
pkg install libzmq # dependency for jupyter notebook kernel
pip install notebook

# install pillow, and then matploblib / plotly
pkg install libjpeg-turbo libtiff freetype libwebp tcl tk libraqm littlecms zstd
LDFLAGS=-L/system/lib64 pip install pillow
pip install matplotlib plotly 
SHELL

值得一提的是就如前文所说,Termux好像无法正常运行通常给aarch64编译的包,有可能是因为没有glibc,或者其他依赖项。因此在Termux中尽量使用官方仓库提供的包,保证没有问题,如果要用其他未提供的包则很有可能需要重新用Clang编译。这也是我尝试安装Anaconda和.Net Core但是都失败了的原因。

Termux好像还支持X11,因此你可以在手机上运行GUI程序!简直牛逼!不过我也没有需求,所以没有试。要实现这个功能需要安装X11服务器,可选的有XServer XSDL和Termux团队正在开发的Termux:X11。用XServer XSDL运行TermuxArch可以参考这个教程

最后虽然我把需要环境弄得差不多了,甚至成功在手机上运行了Jupyter Notebook并且试着画了几张图,但是最后我其实还是发现,Termux最好的归宿还是SSH客户端,毕竟手机的性能限制摆在那里。不过这些工具(尤其是Python)在有时候想随手做点或者算点什么东西的时候还是非常有用的。仅供参考~

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackedJimmy 设计,Jacob 修改