Termux是一款强大的Android终端模拟器和Linux环境应用程序,无需root权限即可运行。它集成了APT包管理器,让用户能够安装各种Linux软件包。Termux支持文件管理、文本编辑、C语言开发等功能,同时提供Python控制台作为计算工具。界面简洁易用,适合喜欢命令行操作的用户。
Termux安卓版入门教程
一、Termux 是什么?
Termux[2] 是一个安卓手机的 Linux 模拟器,可以在手机上模拟 Linux 环境。它提供一个命令行界面,让用户与系统互动。
它就是一个普通的手机 App,可以从应用商店下载安装。不需要 root 权限,也不需要设置,打开就能使用。
二、环境准备
打开 Termux 以后,就是一个全屏的命令行界面。虽然可以用手机的触摸键盘输入命令,但还是推荐使用蓝牙键盘。
第一步,更新一下系统,保证使用最新版本。
# 连接远程仓库,获取软件包信息
$ apt update
# 更新本地已经安装的软件包
$ apt upgrade
第二步,测试系统。
# 安装 sl 软件包
$ apt install sl
# 运行
$ sl
上面命令安装测试包sl,然后运行。如果一切正常,会显示一个火车的命令行动画。
第三步,访问本机存储
手机 App 默认只能访问自己的数据,如果要访问手机的存储,需要请求权限。
$ termux-setup-storage
执行上面的命令以后,会跳出一个对话框,询问是否允许 Termux 访问手机存储,点击“允许”。
这会在当前目录下生成一个storage子目录,它是手机存储的符号链接,后文下载文件就是到这个目录去下载。
三、软件包管理
除了apt命令,Termux 还提供pkg命令进行软件包管理。
# 安装软件包
$ pkg install [package name]
# 卸载软件包
$ pkg uninstall [package name]
# 列出所有软件包
$ pkg list-all
其实,pkg的底层[3]就是apt,只是运行前会执行一次apt update,保证安装的是最新版本。所以,apt install sl基本等同于pkg install sl。
Termux 支持的软件包清单,可以到这里[4]查看。
四、Node.js
下面,安装 Node.js。
$ apt install nodejs
安装完成后,就可以运行 JavaScript 脚本了。比如,新建一个脚本hello.js。
// hello.js
console.log('hello world');
然后,执行这个脚本。
$ node hello.js
hello world
五、架设 Server
现在,通过 Node.js 运行 HTTP Server。
首先,安装 npm 模块http-server[5]。
$ npm install -g http-server
然后,运行 Server。
$ http-server
正常情况下,命令行会提示 Server 已经在 8080 端口运行了,并且还会提示外部可以访问的 IP 地址。
举例来说,手机的局域网 IP 是 192.168.2.6,那么我们通过桌面电脑的浏览器访问http://192.168.2.6:8080,就可以看到 Termux 的根目录了。进入下面的storage子目录,就可以下载手机文件了。
如果手机和电脑不在同一个局域网,那可以打开手机的热点功能,让桌面电脑通过手机热点上网,再访问手机的 HTTP Server。
这里顺便提一下,下面的命令可以从命令行查看手机的 IP 地址。
$ apt install net-tools
$ ifconfig
六、Python
不使用 Node.js,而使用其他方法架设 HTTP Server 也是可以的。下面演示 Python 的方法。
$ apt install python
$ python -m http.server 8080
然后,桌面电脑就可以访问手机了。
Termux 是非常强大的工具,除了上面的方法,还可以架设 Apache 服务器[6],或者通过其他途径[7](FTP、SSH、Rsync)访问手机,这里就不详细介绍了。
使用Termux在手机上运行Python教程
Termux 初始化
初次使用 Termux 需等待 Installing bootstrap packages (安装引导程序包)完成,如下图。
等待 Installing bootstrap packages (安装引导程序包)结束后可看到 Termux 的欢迎界面,如下图。
在 Termux 中输入命令 termux-setup-storage 回车以获取储存权限(注:长按后按 Paste 粘贴),如下图,点允许即可。
Termux 换镜像
使用 Termux 安装包之前一般需先换镜像,不换镜像可能会导致包安装慢或安装失败,下图为未换镜像尝试安装 vim 失败截图。
这里以换成清华大学开源软件镜像为例,在 Termux 中执行命令 termux-change-repo 进入图形界面如下图。
注:以下操作只适用于较新版的 Termux,如0.114,不适用0.73版的)(警告:镜像仅适用于 Android 7.0 (API 24) 及以上版本,旧版本系统使用本镜像可能导致程序错误。)
使用自带方向键可上下移动,空格选择需要更换的仓库,这里我全选,如下图。
回车进入下一界面,如下图。
选择最后 Mirrors by BFSU,如下图。
确认无误后回车,镜像源会自动完成更换。出现如下镜像更换成功。
Termux安装 Python
在 Termux 中输入 pkg install python 回车安装Python,出现如下图。
输入 Y 回车,出现下图。
等待,等到出现下图代表安装 Python 成功。
到这恭喜您 Python 环境已经安装完了,赶快运行个程序试试吧!
如何使用Termux安卓版搭建本地VSCode在线编程环境
初见Termux
Termux是一款Android终端仿真器和Linux环境应用程序,无需ROOT或设置即可直接工作。笔者建议从Google Play商店安装。
安装好后,可以看到以下的界面,这是一个模拟终端,并不能运行Linux环境下的二进制程序。但是Termux下可以安装proot-distro,这个软件可以在Termux存储空间内部署一个真正的Linux环境。
更换速度更快的Termux源
在安装proot-distro之前,我们先换Termux源,这样之后的速度会比较快。(Termux默认连接的国际站点,国内太慢)这里推荐使用中科大的Termux源。
官网给出了很详细的换源教程。
安装proot-distro
在换好源后,使用pkg update更新Termux软件源。之后使用pkg install proot-distro安装proot-distro,效果如下所示。
proot-distro支持几乎所有常用的Linux发行版:Alpine、Arch、Debian、ubuntu、manjaro等等。
安装Ubuntu环境
此处以大家用的最多的Ubuntu来演示,安装一个上面列出的ubuntu 22.04 (jammy)环境,使用proot-distro install ubuntu来安装,安装过程需要联网,耐心等待。
进入并配置Ubuntu环境
安装后,使用proot-distro login ubuntu进入ubuntu shell环境。输入uname -a,发现内核还挺新,是5.4版本。接下来的操作就和安卓没关系啦,和桌面Linux一样使用即可。前端的electron、react、vue,后端java、go、rust,c++啥的装起来!加个ssh,就可以用电脑远程调试代码了。
在使用之前,还是推荐使用中科大Ubuntu port源,加速软件获取速度。
此处需要大家安装vim、wget两个组件,一个用于编辑配置文件,另一个用于下载VSCode Server。二者使用apt install xxx即可。
下载VSCode Server
此处在Github下载最新版本,并解压。
使用vim创建一个/root/.config/code-server/config.yaml,填入以下内容。用于外部连接、设置密码为12345、监听8080端口。
bind-addr: 0.0.0.0:8080
auth: password
password: 12345
cert: false
接下来下载并打开VSCode Server。
# 下载
wget https://github.com/coder/code-server/releases/download/v4.4.0/code-server-4.4.0-linux-arm64.tar.gz
# 解压
tar -zxvf code-server-4.4.0-linux-arm64.tar.gz
# 进入文件夹
cd code-server-4.4.0-linux-arm64/bin
# 运行
./code-server
此处直接运行后,VSCode Server就在手机上跑起来了。
测试效果
首先在手机浏览器上输入http://127.0.0.1:8080,成功。
输入之前设置的密码12345后,已经成功进入VSCode。(为了方便演示,手机横屏处理)
一切准备就绪了,为了方便写代码,我们使用电脑访问手机上的VSCode Server,简单写一段程序,并编译试试?
安装GCC/编写代码
使用sudo apt update && sudo apt install -y gcc g++即可安装好GCC编译器。
编写一段简单的代码测试,如图。成功了哦。