Version 5.0 maintains compatibility with older versions where possible, but brings some fundamental changes which may not be favored by some users.
Key differences:
-
Rewritten in Python
Older versions of proot-distro already was an overgrown Bash script with well-known bottleneck of execution speed and strong dependency on external utilities (e.g. curl), also specifics of shell scripting make it very hard to add any complex functionality.
Rewriting it to Python makes it way better, but now this means proot-distro needs a python package to be installed.
-
OCI image registry as primary source for distribution downloads
Docker Hub and other public registries provide Linux distribution base images as well as already prepackaged application sets. This is also a convenient way for a lot of people and organizations outside the Termux community to build and share their stuff. So why not?
PRoot-Distro still keeps support for installation from plain rootfs archives.
-
PRoot-Distro no longer provides own rootfs tarballs
Particularly not in the official way, as I may still provide rootfs tarballs and build recipes occasionally.
But in general I expect that community will contribute to Termux/Linux ecosystem, to build and keep up the stuff they are interested in rather than relying on me.
Distribution images provided on Docker Hub may show a bit different behavior than what was previously provided by proot-distro v4.x:
- Minimized: for example no
man utility and no manual pages. Sometimes you'll need to run unminimize command (e.g. in debian), on some others you'll need to edit package manager config (e.g. rpm-based distributions) and reinstall wanted packages to get docs.
- Set of default packages can be different: a case with recent Ubuntu releases (25.10+) where GNU coreutils replaced with Rust-based variant and caused
coreutils: unknown program 'loader' error until proot fix was made.
- No out-of-box distribution-specific fixes: registry provides "vanilla" kind of images and making fixes for everything through proot-distro package is not feasible.
Now answering some questions before they will start to pop up in issue tracker.
- What distributions supported by proot-distro v5?
In general all existing Linux distributions are supported, providing their environment can run under proot.
- Where can I find distributions?
On Docker Hub by using search. Good starting point: https://hub.docker.com/search?type=image&categories=Operating+systems&architecture=arm64&operating_system=linux
- I used proot-distro v4 before, what will happen after upgrade?
When you will run proot-distro login <old-container>, the utility will apply all necessary changes for further seamless usage. However that change can't be easily reverted - consider this while upgrading.
- None of base tools work in Ubuntu now, what to do?
If you see coreutils: unknown program 'loader', then upgrade proot package.
PRoot-Distro requires proot 5.1.107-71 or newer. You cannot use proot pulled elsewhere from third parties or original variant in Termux.
- Desktop doesn't work, why?
Ubuntu 24.04 and Debian 12 should work. Newer versions indeed may not and this is independent of proot-distro.
Newest distribution versions ship gdk-pixbuf package that depends on /usr/bin/bwrap and this utility requires Linux namespaces to work. The workaround is tricky: termux/termux-packages#28421 (comment)
Utility provides a nice built-in help information for getting started (proot-distro help), but just in case leaving essentials there. I'll take Ubuntu 24.04 for examples.
Install distribution:
proot-distro install ubuntu:24.04
Use option --name to set custom name for container. Omitting :24.04 will cause installation of the latest published version (26.04 by date of this post).
Start shell:
proot-distro login ubuntu
Remove container:
proot-distro remove ubuntu
Recommended distributions to try:
alpine:3.23
archlinux/archlinux:base-20260517.0.530531 (x86_64!)
danhunsaker/archlinuxarm:20260517
chimeralinux/chimera:latest
debian:12
fedora:44
gentoo/stage3:20260511 (disable sandbox via /etc/portage/make.conf)
manjarolinux/base:20260322
nixos/nix:2.32.8
opensuse/leap:15
rockylinux/rockylinux:10
aclemons/slackware:current
termux/termux-docker:aarch64
ubuntu:24.04
If you have any objections about Python rewrite, project direction, maintainer's decision and AI usage for development, I would recommend to look for alternatives rather than sending complaints.
Version 5.0 maintains compatibility with older versions where possible, but brings some fundamental changes which may not be favored by some users.
Key differences:
Rewritten in Python
Older versions of proot-distro already was an overgrown Bash script with well-known bottleneck of execution speed and strong dependency on external utilities (e.g.
curl), also specifics of shell scripting make it very hard to add any complex functionality.Rewriting it to Python makes it way better, but now this means
proot-distroneeds apythonpackage to be installed.OCI image registry as primary source for distribution downloads
Docker Hub and other public registries provide Linux distribution base images as well as already prepackaged application sets. This is also a convenient way for a lot of people and organizations outside the Termux community to build and share their stuff. So why not?
PRoot-Distro still keeps support for installation from plain rootfs archives.
PRoot-Distro no longer provides own rootfs tarballs
Particularly not in the official way, as I may still provide rootfs tarballs and build recipes occasionally.
But in general I expect that community will contribute to Termux/Linux ecosystem, to build and keep up the stuff they are interested in rather than relying on me.
Distribution images provided on Docker Hub may show a bit different behavior than what was previously provided by proot-distro v4.x:
manutility and no manual pages. Sometimes you'll need to rununminimizecommand (e.g. indebian), on some others you'll need to edit package manager config (e.g. rpm-based distributions) and reinstall wanted packages to get docs.coreutils: unknown program 'loader'error until proot fix was made.Now answering some questions before they will start to pop up in issue tracker.
In general all existing Linux distributions are supported, providing their environment can run under
proot.On Docker Hub by using search. Good starting point: https://hub.docker.com/search?type=image&categories=Operating+systems&architecture=arm64&operating_system=linux
When you will run
proot-distro login <old-container>, the utility will apply all necessary changes for further seamless usage. However that change can't be easily reverted - consider this while upgrading.If you see
coreutils: unknown program 'loader', then upgrade proot package.PRoot-Distro requires proot
5.1.107-71or newer. You cannot use proot pulled elsewhere from third parties or original variant in Termux.Ubuntu 24.04 and Debian 12 should work. Newer versions indeed may not and this is independent of proot-distro.
Newest distribution versions ship gdk-pixbuf package that depends on
/usr/bin/bwrapand this utility requires Linux namespaces to work. The workaround is tricky: termux/termux-packages#28421 (comment)Utility provides a nice built-in help information for getting started (
proot-distro help), but just in case leaving essentials there. I'll take Ubuntu 24.04 for examples.Install distribution:
Use option
--nameto set custom name for container. Omitting:24.04will cause installation of the latest published version (26.04 by date of this post).Start shell:
Remove container:
Recommended distributions to try:
alpine:3.23archlinux/archlinux:base-20260517.0.530531(x86_64!)danhunsaker/archlinuxarm:20260517chimeralinux/chimera:latestdebian:12fedora:44gentoo/stage3:20260511(disable sandbox via /etc/portage/make.conf)manjarolinux/base:20260322nixos/nix:2.32.8opensuse/leap:15rockylinux/rockylinux:10aclemons/slackware:currenttermux/termux-docker:aarch64ubuntu:24.04If you have any objections about Python rewrite, project direction, maintainer's decision and AI usage for development, I would recommend to look for alternatives rather than sending complaints.