Skip to content

Version 5.0 release notes #666

Description

@sylirre

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.

  1. What distributions supported by proot-distro v5?

In general all existing Linux distributions are supported, providing their environment can run under proot.

  1. 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

  1. 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.

  1. 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.

  1. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions