Android/busybox/termux 测试环境

Android / busybox / termux test envionment

我正在开发 运行 在 Linux/BSD/Mac/Windows 上的一些 bash 脚本。 我想将它们移植到 busybox 环境,让它们在 android 终端仿真器中 运行,比如 termux。

获得 busybox 测试环境的最佳方法是什么/android? 我尝试使用 docker busybox 图像。 我还需要能够添加诸如 ssh 客户端或 rsync 之类的工具,它们通过 apt install rsync 在 android termux 中工作,但由于显而易见的原因在 docker 图像中无法工作。

有什么想法吗? 谢谢

Busybox 本身实际上只是一个单一的多调用二进制文件,可以像许多不同的工具一样运行。在纯 busybox 环境中,您可能最终会编译 busybox 以包含您需要的小程序(如 rsync)。

在您的问题中,您引用了一个命令 apt install rsync。正如您提到的,Busybox 没有 apt 命令。可以安装一个包管理器,该管理器又可以按需安装东西。

Alpine Linux 发行版有一个非常小的包管理器,叫做 apk,它也可以使用 busybox。 Docker Hub 上的 alpine 官方镜像基本上只有 busybox 和 apk。它的包基于 libmusl 而不是 glibc。肯定值得一看 alpine。

以下是在 alpine 上安装 rsync 的方法:

$ docker run --rm -it alpine sh
/ # which busybox
/bin/busybox
/ # ls -lah `which mv`
lrwxrwxrwx    1 root     root          12 Jun 23 19:37 /bin/mv -> /bin/busybox
/ # apk --no-cache add rsync
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
(1/4) Installing libattr (2.4.47-r4)
(2/4) Installing libacl (2.2.52-r2)
(3/4) Installing popt (1.16-r6)
(4/4) Installing rsync (3.1.2-r2)
Executing busybox-1.24.2-r9.trigger
OK: 5 MiB in 15 packages
/ # ls -lah `which rsync`
-rwxr-xr-x    1 root     root      396.0K Apr 29 16:02 /usr/bin/rsync
/ #

其他小型包管理器也可以工作,但我不知道将它们安装到精简的 busybox 根目录(如 busybox 图像)中有多容易。嵌入式包管理器会想到 opkg 和 ipkg。