Android / busybox / termux test envionment

I’m developping some bash scripts that run on Linux/BSD/Mac/Windows.
I’d like to port them to the busybox environment, to get them to run in an android terminal emulator, like termux.

What’s the best way to get a test environment for busybox / android ?
I’ve tried to go with the docker busybox image.
I also need to be able to add tools like an ssh client or rsync, which works in android termux via apt install rsync, but won’t work in a docker image for obvious reasons.

  • How to start muli process in background with supervisor on Docker
  • How can I change the docker id and name
  • Filter docker-compose output
  • Docker. How to get bash\ssh inside runned container (run -d)?
  • How can I reproduce zombie process with bash as PID1 in docker?
  • How can I force cancel dockerbuild using bash a command?
  • Any ideas ?
    Thanks.

  • Cannot shutdown high load docker mysql
  • Install Docker auto completion without using Home Brew
  • Symfony Process pgrep fails
  • command not found when running in docker bash script
  • How to git install instead of pip install?
  • Bash brace expansion not working on Dockerfile RUN command
  • One Solution collect form web for “Android / busybox / termux test envionment”

    Busybox itself is really just a single multicall binary that can behave like many different tools. In a pure busybox environment, you’d probably end up compiling busybox to include the applets that you need (like rsync).

    In your question, you referenced a command apt install rsync. Busybox doesn’t have an apt command, like you mentioned. It may be possible to install a package manager that would in turn be able to install things on demand.

    The Alpine Linux distro has a very small package manager called apk, and it also can use busybox. The alpine official image on the Docker Hub essentially has just busybox and apk. Its packages are based on libmusl instead of glibc. It’d be worth taking a look at alpine for sure.

    Here’s how to install rsync on alpine:

    $ 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
    / #
    

    Other tiny package managers may work as well, but I’m not aware of how easy they are to install into a stripped down busybox root (like the busybox image). opkg and ipkg come to mind for embedded package managers.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.