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.

Al abrir Termux aparece un terminal bash:

Termux - Terminal Inicio

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:

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.

no sigue el estándar FHS, es decir, los directorios /bin, /usr, /home...no están en su ubicación estándar:

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

OTRAS UTILIDADES INTERESANTES


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

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

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

cat ~/.vnc/xstartup

GESTORES DE VENTANAS

Puedes instalar cualquiera de los siguientes gestores de ventanas:

FLUXBOX

Mas simple, consume menos recursos del sistema.

  1. Instalación: $ pkg install fluxbox

  2. Configurar xstartup: $ nano ~/.vnc/xstartup

    #!/data/data/com.termux/files/usr/bin/sh
    ## Fluxbox Desktop
    
    # Generar Menu
    fluxbox-generate_menu
    
    # Iniciar fluxbox
    fluxbox &
    
  3. Reiniciar vncserver:

    $ vncserver -kill :1
    $ vncserver
    $ export DISPLAY=":1"
    

Si te conectas al servidor vnc verás como se despliega el escritorio fluxbox:

Fluxbox Screenshot 1

Puedes instalar algún explorador de archivos, por ejemplo: $ apt install pcmanfm, y ejecutarlo mediante $ pcmanfm:

Fluxbox Screenshot 2

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.

  1. Instalación: $ pkg install openbox pypanel xorg-xsetroot

  2. 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 &
    
  3. Reiniciar vncserver:

    $ vncserver -kill :1
    $ vncserver
    $ export DISPLAY=":1"
    

Si te conectas al servidor mediante un cliente vnc se despliega el escritorio openbox:

Openbox Screenshot


MI OPINIÓN


Termux es un entorno Linux que puede utilizarse para múltiples finalidades, pero para mí sus puntos fuertes son los siguientes:

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.


ENLACES



Termux neofetch