Termux - Terminal Linux para Android
Gracias a Termux puedes ejecutar Python en dispositivos móviles,
al igual que lo haces en otros sistemas Linux...
Termux es un emulador de terminal, así como una aplicación de entorno Linux para Android.
- Salvo por algunas particularidades, Termux permite utilizar dispositivos Android como cualquier sistema Linux.
- Termux NO requiere que el dispositivo este rooteado para funcionar.
- Puedes descargar Termux en Google Play Store o en F-Droid.
- Puedes obtener mas información en la Página Oficial de Termux.
Al abrir Termux aparece un terminal bash:
Particularidades de Termux
Salvo por algunas particularidades, Termux permite utilizar dispositivos Android como cualquier sistema Linux, es decir, Termux es un entorno Linux completo, pero no es una distribución Linux tradicional:
- Termux es un sistema de un único usuario, por lo que no existen ni tipos de usuarios ni el comando
sudo
.
Al utilizar Termux dispones de todos los permisos en $HOME, de manera que en este directorio y en sus subdirectorios puedes otorgar todo tipo de permisos a tus scripts (chmod 755 foo.py). En los directorios de nivel superior solo dispones de permisos de lectura. Si quieres ejecutar programas fuera de $HOME (es decir, fuera del directorio de la aplicación, ya que $HOME=/data/data/com.termux/files/home) puedes ejecutar $ termux-setup-storage
, comando que creará el directorio $HOME/storage que permite acceder a la targeta de memoria del dispositivo. Pero en storage no puedes otorgar permisos de ejecución a un script mediante $ chmod 755 storage/.../foo.py
y ejecutar $ ./foo.py
, aquí solamente puedes ejecutar tus scripts mediante la llamada explicita al interprete de Python: $ python storage/.../foo.py
.
- Termux comparte el árbol de sistema de archivos con Android, por lo que no tiene su propio sistema de archivos raíz y
no sigue el estándar FHS, es decir, los directorios /bin, /usr, /home...no están en su ubicación estándar:
- $PREFIX = /data/data/com.termux/files/usr
- $HOME = /data/data/com.termux/files/home
Sin embargo, para una mayor compatibilidad con aplicaciones puedes establecer $HOME=/home instalando $ pkg install termux-proot
y ejecutando $ termux-chroot
(que deberás ejecutar en cada sesión si quieres que $HOME=/home). Esto no modifica la ubicación real de $HOME, es como si se crease un enlace simbólico:
$ ln -s /data/data/com.termux/files/home /home
$ $HOME=/home
Esto no es posible porque no se pueden crear enlaces simbólicos en el directorio raíz /, ya que es de solo lectura. termux-chroot
emula esta acción pero además es la solución cuando intentas instalar paquetes y se produce algún error.
NOTA (Android 10): Si $ termux-setup-storage
no genera el directorio storage puedes acceder a la sdcard así:
$ termux-setup-storage
$ ln -s /sdcard ~/sdcard
De esta manera habrás creado un enlace simbólico a /sdcard en el directorio $HOME.
Nombre de usuario y contraseña
El nombre de usuario en Termux es el ID de la aplicación en Android. El nombre de usuario y contraseña serán necesarios para conectarse al dispositivo mediante SSH.
Para ver el nombre de usuario ejecuta $ whoami
, y para cambiar la contraseña $ passwd
:
$ whoami
u0_a62
$ passwd
New password:
Retype new password:
New password was successfully set.
INSTALACIÓN DE PROGRAMAS PARA EL DESARROLLO
En Termux pueden instalarse paquetes a través de pkg y apt. Antes de nada es recomendable ejecutar $ pkg upgrade
.
PROGRAMAS FUNDAMENTALES
$ pkg install python
ó$ pkg install python-tkinter
- Como buenos programadores de Python lo primero que haremos será instalarlo.
Se instalará alguna versión de Python3 (actualmente, 7 de Marzo de 2020, instala Python 3.8.2). Puede abrirse el interprete desde el terminal utilizando el comando
python
o el comandopython3
. Puedes instalar módulos y paquetes mediante pip. Solamente deberías instalar la versiónpython-tkinter
si piensas instalar un gestor de ventanas posteriormente. Ten en cuenta que si instalas python y mediante pip instalas paquetes, y posteriormente instalas python-tkinter, se sobreescribirá tu instalación python perdiendo los módulos instalados (aunque estos estarán en cache y su reinstalación será rápida).$ pkg install clang
- Creo que ahora se instala por defecto con python, pero no está de mas comprobar
si está instalado. clang es necesario a la hora de compilar algunos paquetes de pip, como por ejemplo Pillow.
$ pkg install openssh
- Para conectarnos remotamente al dispositivo y trabajar mas cómodamente. Termux tiene soporte para la entrada de texto táctil y también para ratón y teclado conectados al dispositivo Android, sin embargo lo más cómodo es trabajar desde un ordenador conectándonos mediante SSH y SFTP. Una vez instalado ejecuta
$ sshd
en el terminal y ya podrás acceder al dispositivo conociendo su dirección ip, nombre de usuario y contraseña:ifconfig
,whoami
ypasswd
. Ten en cuenta que Android no permite conexiones a través del puerto 22 estandar para SSH/SFTP, y en su lugar debes conectarte a través del puerto 8022. Si quieres conectarte a través de Internet y usar el puerto estandar debes configurar un redireccionamiento de puertos en el router.
- Para conectarnos remotamente al dispositivo y trabajar mas cómodamente. Termux tiene soporte para la entrada de texto táctil y también para ratón y teclado conectados al dispositivo Android, sin embargo lo más cómodo es trabajar desde un ordenador conectándonos mediante SSH y SFTP. Una vez instalado ejecuta
$ pkg install screen
- screen es un administrador de terminales que permite agrupar procesos, ponerlos en segundo plano y recuperarlos para seguir trabajando con ellos.
$ pkg install procps
- Para matar procesos en ejecución mediante
pkill
.
- Para matar procesos en ejecución mediante
$ pkg install htop
- htop es un administrador de tareas que se ejecuta en el terminal. Permite visualizar el uso de la CPU y la memoria del sistema, configurar la prioridad de los procesos en ejecución y detenerlos. Lamentablemente no funciona correctamente en las ultimas versiones de Android.
$ pkg install nano
- nano es un editor de texto que se ejecuta en el terminal. Aunque puedes conectarte mediante SFTP y editar tus scripts con cualquier editor de texto, nano resulta muy útil para ediciones realizadas directamente desde el dispositivo o a través de una conexión SSH.
OTRAS UTILIDADES INTERESANTES
$ pkg install net-tools
- Para conocer la dirección ip de la interfaz de red del dispositivo mediante
ifconfig
.
- Para conocer la dirección ip de la interfaz de red del dispositivo mediante
$ pkg install wget
- wget permite descargar el contenido de direcciones URL.
$ pkg install tree
- tree se utiliza para visualizar árboles jerárquicos del sistema de archivos.
GESTOR DE VENTANAS
Debido a la posibilidad de trabajar con sshd
y conectarnos al dispositivo mediante SSH/SFTP y gracias a screen
, no considero necesario un gestor de ventanas para trabajar con Termux, a no ser que quieras crear y ejecutar aplicaciones hechas con Tkinter en Android.
Si quieres instalarlo y "cacharrear" previamente hay que instalar un servidor vnc para definir la variable de entorno DISPLAY, de manera que los programas con interfaz gráfica tengan "un lugar" donde dibujar su interfaz.
VNCSERVER
Instalar vncserver:
$ pkg install x11-repo
$ pkg install tigervnc
Se ha creado el directorio ~/.vnc, que contiene entre otros el archivo xstartup que configuraremos posteriormente.
Iniciar vncserver:
$ vncserver
- Si es la primera vez que lo ejecutas pedirá que definas nombre de usuario y contraseña. Si se ejecuta satisfactoriamente mostrará por consola el siguiente output:New 'localhost:1 ()' desktop is localhost:1
$ export DISPLAY=":1"
- La variable de entorno DISPLAY debe tomar el valor del desktop creado al ejecutar el comando anterior, de modo que si desktop is localhost:1 entonces DISPLAY=":1".
Exportamos DISPLAY a todos los terminales para que la salida gráfica de los programas sea el desktop creado anteriormente.
Ya puedes conectarte remotamente mediante un cliente vnc. Ten en cuenta que el servidor vnc del dispositivo no está escuchando a través del puerto estándar 5900, sino a través del puerto 5901. Esto se debe a restricciones del sistema operativo Android.
Sin embargo, todavía no hemos instalado un gestor de ventanas, y si nos conectamos al servidor vnc solamente podremos acceder a una consola aterm, cosa que no es mas util que trabajar con SSH. Esto se debe a la configuración por defecto del archivo ~/.vnc/xstartup:
GESTORES DE VENTANAS
Puedes instalar cualquiera de los siguientes gestores de ventanas:
FLUXBOX
Mas simple, consume menos recursos del sistema.
Instalación:
$ pkg install fluxbox
Configurar xstartup:
$ nano ~/.vnc/xstartup
#!/data/data/com.termux/files/usr/bin/sh ## Fluxbox Desktop # Generar Menu fluxbox-generate_menu # Iniciar fluxbox fluxbox &
Reiniciar vncserver:
$ vncserver -kill :1 $ vncserver $ export DISPLAY=":1"
Si te conectas al servidor vnc verás como se despliega el escritorio fluxbox:
Puedes instalar algún explorador de archivos, por ejemplo: $ apt install pcmanfm
, y ejecutarlo mediante $ pcmanfm
:
Ahora, si lo deseas, puedes crear aplicaciones con Tkinter, la interfaz gráfica será visible a través de Fluxbox. Tkinter no viene instalado por defecto, pero puedes instalarlo facilmente: $ pkg install python-tkinter
(recuerda que si previamente instalaste $ pkg install python
e instalaste paquetes con pip, al instalar python-tkinter en Termux se eliminarán estos paquetes y tendrás que reinstalarlos).
OPENBOX
Algo mas complejo y pesado, consume mas recursos del sistema.
Instalación:
$ pkg install openbox pypanel xorg-xsetroot
Configurar xstartup:
$ nano ~/.vnc/xstartup
#!/data/data/com.termux/files/usr/bin/sh ## Openbox Desktop # Iniciar openbox openbox-session & # Establecer fondo gris xsetroot -solid gray # Mostrar PyPanel pypanel &
Reiniciar vncserver:
$ vncserver -kill :1 $ vncserver $ export DISPLAY=":1"
Si te conectas al servidor mediante un cliente vnc se despliega el escritorio openbox:
MI OPINIÓN
Termux es un entorno Linux que puede utilizarse para múltiples finalidades, pero para mí sus puntos fuertes son los siguientes:
- Como cliente SSH.
- Para familiarizarte con Linux si vienes de Windows.
- Para montar servidores.
Montar servidores en Termux
Este es el principal uso que le doy a Termux. Si continúas leyendo has de saber que este sitio web se encuentra en un dispositivo Huawei P9 Lite cuyo puerto USB se estropeó y no carga la batería correctamente. Me compré otro móvil pero no me deshice de este, sino que lo mantengo conectado a la corriente sirviendo este sitio web.
Me parece una gran manera de reutilizar un dispositivo "obsoleto", ya que es muy potente y no consume demasiada energía. Es mucho mejor que mantener encendido un PC las 24 horas del día los 365 días del año. Anteriormente mantenía la web en una raspberry pi, pero aunque es una muy buena opción no puede competir con el octacore de un dispositivo móvil moderno.
A su vez, las descargas de este sitio se administran mediante un servidor FTP también ejecutado en Termux. Puedes crear tu propio servidor ftp en Termux.