Install Termux from F-Droid because Play ships a fork

The Termux Android Linux terminal turns a phone into a real shell with a package manager and about 2,900 packages, no root required. Install it from F-Droid or the project’s GitHub releases. The Google Play version is a separate fork that the core maintainers do not support, and mixing sources breaks the app.

Key Takeaways

  • Termux gives an Android phone a real shell and package manager, no root.
  • Skip Google Play. That build is an unsupported fork of the real app.
  • Around 2,900 packages come from Termux’s own servers, built for Android.
  • Android kills background processes, so hold a wake lock before long jobs.
  • Add-on apps bring home screen widgets, device sensors, and a boot hook.

What the Termux Android Linux terminal gives you

Termux is a normal Android app that happens to hold a shell, a package manager, and its own software repositories. You install it and open it like anything else on your phone.

Two wrong ideas trip people up: that it emulates a computer, and that it installs a Linux distro next to Android. Neither is true. There is no virtual machine, emulator, or chroot anywhere in it, so startup is instant and the runtime cost is zero.

Termux packages are built against Android’s own C library and unpacked inside the app’s private folder. That design buys speed, but it costs compatibility. A binary made for Debian or Arch won’t just run here, so the project runs its own build farm at termux/termux-packages.

The stable ARM64 repository carries shells, compilers, editors, version control, and network tools, so you get Python, Go, Git, Vim, OpenSSH, curl, and ffmpeg on a device in your pocket.

Termux on a phone running GNU nano to edit hello.c, then compiling it with clang and printing Hello World from Termux
A text editor and a C compiler, both running as ordinary Android processes
Image: Termux on F-Droid

Running a server over SSH, firing off a script, syncing files, and making quick edits all work, though nobody builds a real project on a 6-inch screen.

Why the install source decides whether it works

Most “Termux is broken” reports are really “you installed the wrong build”. Termux ships from three places, and only two of them are the maintained app.

The Google Play listing comes out of a separate GitHub org called termux-play-store, owned by the project’s original author. To pass Play policy, that build rolled back ten releases worth of changes.

Basically, PlayStore termux-app v0.120 release is functionally equivalent to v0.108.

agnostic-apollo (Termux maintainer, announcement thread)

The same announcement calls the Play release an unofficial, forked release source and points issue reports at a different tracker. It also warns that the workaround the Play build uses to run binaries conflicts with Play policies, so the listing could disappear.

SourceBuilt byAndroidInstall sizeThe catch
F-DroidF-Droid, from Termux releases7 and up~180 MB universalUpdates lag GitHub by days or weeks
GitHub releasesTermux core team7 and up~120 MB per architectureSigned with a publicly shared test key
Google PlayA separate fork repository11 and upVariesUnofficial, reduced permissions, features removed

Each source signs its app files with a different key, and Termux shares one Android user ID across the main app and every add-on. You therefore cannot upgrade across sources, and an F-Droid main app will not talk to a GitHub add-on.

When you get this wrong, Android does not explain itself. You get App not installed, INSTALL_FAILED_UPDATE_INCOMPATIBLE, or signatures do not match previously installed version. Add-ons install but never connect, and the whole thing looks like a bug in Termux. So pick one source, install the app and every add-on from it, and never mix.

How to install Termux correctly and set it up

Uninstall any Play Store copy first

Open Android settings, search the app list for termux, and remove the main app plus every add-on you find. A leftover copy blocks the new install.

Install from F-Droid or GitHub releases

Grab the app from the F-Droid listing or from GitHub releases. F-Droid is the easier path and handles updates for you. GitHub gets new versions first and offers smaller per-architecture builds. Pick one and stay on it.

Install the add-ons from the same source

There are four. Termux:API reaches device features, Termux:Widget adds home screen script shortcuts, Termux:Boot runs scripts at startup, and Termux:Float gives you a floating terminal.

Update the package list

Open the app and run pkg upgrade before installing anything else. It refreshes the package index and pulls newer bootstrap tools.

Termux welcome screen listing pkg search, pkg install and pkg upgrade commands above a shell prompt and the extra keys row
The first screen after install spells out the package commands you need
Image: Termux on F-Droid

Give it storage access

Run termux-setup-storage and accept the Android permission prompt. The command builds a ~/storage directory full of symlinks to your shared folders. Without it, Termux cannot see your downloads, photos, or documents at all.

Install what you actually need

Use pkg install openssh git python vim as a starting point. Everything comes from Termux’s own repositories, so package names sometimes differ from what a desktop distribution uses.

Stop Android killing your session

Open the Termux notification and tap Acquire wakelock. Then find Termux in your battery settings and set it to unrestricted. Both are needed, and on some phones neither is enough.

Add a real keyboard if you’ll use it seriously

A touchscreen keyboard leaves the terminal at demo level, so pair a Bluetooth keyboard if you want something you’ll actually reach for.

Fighting Android for your own processes

Android is built to stop apps running in the background, which is exactly what a terminal has to do. That clash is the biggest source of grief for anyone leaning on Termux.

Android 12 added a phantom process killer that trims child processes once more than 32 are alive across all apps at once. When it fires, your shell dies and the terminal prints [Process completed (signal 9) - press Enter]. The project tracks this in issue #2366, and its README warns that Termux may be unstable on Android 12 and later because of it.

Three defences help, in rough order of effort:

  • Hold a wake lock, either by tapping Acquire wakelock in the Termux notification or by running termux-wake-lock in the shell. It keeps the device out of deep sleep.
  • Take Termux off battery optimisation. The setting hides somewhere different on every phone, and dontkillmyapp.com maps the path per brand.
  • Turn off the phantom process killer. Android 14 and later has a developer options toggle called Disable child process restrictions. On Android 12 and 13 it takes an ADB command: adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647".

Even then, the system wins sometimes. Users report on issue #5150 that Android 15 still kills long jobs despite a held wake lock and an unrestricted battery setting. Several phone brands stack their own killing on top of stock Android, and no app setting beats it.

A wake lock carries long SSH sessions, scripted tasks, and file syncing without trouble. Beyond that, treat a phone as an always-on server only if you build in restarts and accept the odd sudden death.

What to do with it, and what to use instead

One job pays for Termux on its own: running servers over SSH. A full OpenSSH client in your pocket reaches a box from a train, a queue, or a friend’s sofa, and the laptop stays at home. If you want a graphical app instead, see how Termux stacks up against the best Android SSH clients.

It earns its space on quick work too: fire off a script, sync files with rsync, edit a config, or poke at the network you’re standing in with nmap and dig.

Nmap scan output in Termux showing host 192.168.1.1 up with port 53 domain and port 80 http open
A router scanned from the phone already connected to it
Image: Termux on F-Droid

The add-ons are the underrated part. Termux:Widget puts a script on your home screen as a one-tap button. Termux:API wires the shell to the camera, clipboard, sensors, SMS, and notifications, so a shell script becomes a small phone automation. With Termux:Boot, a script runs whenever the phone starts.

Android home screen with a Termux widget listing loc.sh and note.sh scripts, plus a separate note.sh shortcut icon
Termux:Widget turns a shell script into a one-tap home screen button
Image: termux/termux-widget

Day-to-day coding is a losing battle on a phone screen with a soft keyboard, and an always-on server runs into the process killing described above. For heavier work, keep a small machine running at home and SSH into it from the phone. That split leaves Termux doing the part it’s best at.

The project itself is old and busy. The termux-app repository dates to 2015, is written mostly in Java, and carries around 58,000 stars. It also sits on roughly 565 open issues, with v0.118.3 as the last stable release and commits landing since. The package side stays active, though the maintainers have publicly asked for help on the app itself. Read that as stable rather than abandoned, and check r/termux when something acts up on your specific phone.