Comment Termux fonctionne-t-il sur les appareils Android ?
Termux est l'œuvre du développeur suédois Fredrik Fornwall. Selon le site Web de l'émulateur, c'est essentiellement une application qui lance le programme en ligne de commande en utilisant l'appel système execve() et en redirigeant les flux d'entrée, de sortie et d'erreurs standard sur l'écran. La plupart des applications de terminal disponibles sur Android fonctionnent avec un ensemble très limité d'utilitaires qui sont généralement fournis soit par le système d'exploitation, soit par d'autres outils d'ancrage tels que Magisk. Cependant, Termux va plus loin et apporte les logiciels communs habituellement disponibles sur les systèmes GNU/Linux.
Toutefois, notez que Termux n'est ni une machine virtuelle ni un autre type d'environnement émulé ou simulé. Tous les paquets fournis sont compilés avec Android NDK et ne disposent que de correctifs de compatibilité pour les faire fonctionner sur Android. Le système d'exploitation ne fournit pas un accès complet à ses systèmes de fichiers, de sorte que Termux ne peut pas installer de fichiers de paquets dans des répertoires standard tels que /bin, /etc, /usr ou /var. Au lieu de cela, tous les fichiers sont installés dans le répertoire privé de l'application situé à l'adresse "/data/data/com.termux/files/usr".
Pour simplifier les choses, ce répertoire a été renommé "prefix" et est généralement par "$PREFIX" qui est également une variable d'environnement exportée dans le Shell Termux. Cela dit, le développeur informe que ce répertoire ne peut pas être modifié ou déplacé sur une carte SD pour deux raisons principales. Premièrement, le système de fichiers doit prendre en charge les permissions Unix et les fichiers spéciaux tels que les liens symboliques ou les sockets et deuxièmement, le chemin du répertoire "prefix" est codé en dur dans tous les binaires. En plus de "prefix", les utilisateurs peuvent stocker des fichiers dans le répertoire home (ou "$HOME" disponible à l'adresse /data/data/com.termux/files/home.
Quelles sont les caractéristiques et fonctionnalités de Termux ?
Voici quelques caractéristiques et fonctionnalités principales citées par l'auteur pour Termux :
- sécurisé : vous pouvez accéder aux serveurs distants en utilisant le client ssh d'OpenSSH. Termux combine des paquets standards avec une émulation de terminal précise dans une attrayante solution open source ;
- plusieurs fonctionnalités embarquées : vous avez la possibilité d'utiliser Bash, fish ou Zsh et nano, Emacs ou Vim ; de saisir vos SMS dans votre boîte de réception ; d'accéder aux terminaux API avec curl et d'utiliser rsync pour stocker des sauvegardes de votre liste de contacts sur un serveur distant ;
- personnalisable : vous pouvez installer ce que vous voulez grâce au système de gestion de paquets APT connu de Debian et Ubuntu GNU/Linux ;
- explorable : les paquets disponibles dans Termux sont les mêmes que ceux de Mac et Linux. Vous pouvez installer les pages de manuel sur votre téléphone et les lire lors d'une session tout en les expérimentant lors d'une autre ;
- des piles incluses : Termux inclus des versions actualisées de Perl, Python, Ruby et Node.js ;
- mises à l'échelle : vous pouvez connecter un clavier Bluetooth et brancher votre appareil à un écran externe si nécessaire, Termux prend en charge les raccourcis clavier et dispose d'une prise en charge complète de la souris ;
- bricolage : Termux supporte les raccourcis clavier et la souris. Développez en compilant des fichiers C avec Clang et construisez vos propres projets avec CMake et pkg-config. GDB et strace sont tous deux disponibles si vous êtes bloqué et avez besoin de déboguer.
Termux est-il une distribution Linux à part entière ?
En dehors du système de fichiers, Fornwall note qu'il existe également d'autres différences avec les distributions Linux traditionnelles, il n'est donc pas une distribution Linux à proprement parler. En effet, même s'il fournit un écosystème de paquets similaire à celui des distributions Linux, vous devez savoir que Termux n'est qu'une application ordinaire fonctionnant sous Android. Voici ce qu'il y a lieu de retenir :
- comme indiqué précédemment, tout est installé dans $PREFIX et non dans les répertoires standards comme /bin ou /etc ;
- l'environnement est mono-utilisateur seulement. Vous devez faire attention à cela lorsque vous exécutez des commandes en tant que root, car vous pouvez salir les permissions et les étiquettes SELinux (Security-Enhanced Linux) ;
- Termux utilise la même libc (bibliothèque standard du langage C) et le même éditeur de liens dynamiques que l'OS Android.
Selon le site Web de Termux, ces 3 différences majeures causent des problèmes lorsque vous essayez d'exécuter des programmes qui ont été compilés pour un système GNU/Linux typique. En outre, concernant la question demandant si un accès root est nécessaire pour utiliser Termux, le développeur note que, normalement, Termux n'exige pas que l'appareil soit rooté. « En fait, il est principalement destiné aux utilisateurs non root », a-t-il précisé. Toutefois, il est possible de le faire pour avoir plus de privilèges.
Termux et Android 10 et les versions supérieures
La page GitHub de Termux note que l'émulateur ne cible pas actuellement Android 10 (l'API 29) en raison d'un certain nombre de changements apportés par cette version de l'OS. « Les applications non non approuvées qui ciblent Android 10 ne peuvent pas invoquer exec() sur les fichiers situés dans le répertoire d'origine de l'application. Cette exécution de fichiers du répertoire d'origine de l'application en écriture est une violation de W^X. Les applications ne doivent charger que le code binaire qui est intégré dans le fichier APK de l'application », informe Google à propos de l'API 29.
À la date du 2 novembre, Termux n'a toujours pas respecté les exigences de la politique de Google Play concernant le code exécutable et n'a pas fait passer le SDK à 29, de sorte qu'il ne recevra plus les mises à jour des applications dans cette source de distribution. Alors, comment ce problème va-t-il être résolu ? Comme Android, à partir de la version 10, nécessite désormais que le code exécutable soit distribué dans le fichier APK, Termux annonce qu'il va convertir ses fichiers .DEB au format APK en plaçant les fichiers dans le répertoire JNI lib.
L'application Termux détectera automatiquement ces APK et mappera les fichiers JNI dans $PREFIX par des liens symboliques. Termux prévoit également de fournir un petit gestionnaire de paquets qui aidera à gérer les APK. Ainsi, le gestionnaire de paquets APT sera supprimé, car il ne sera plus utilisable. Le développeur estime que cette solution répondra entièrement à toutes les exigences du nouvel OS Android. De plus, elle permet de séparer un espace utilisateur de l'installation des paquets et rendra l'environnement beaucoup plus facile pour la récupération, car les données des paquets seront en lecture seule.
Sources : Termux, Page GitHub de Termux
Et vous ?
Utilisez-vous déjà Termux ? Si oui, quelle est votre expérience avec l'émulateur ?
Connaissez-vous d'autres émulateurs de terminal pour Android ou iOS ?
Voir aussi
PuTTY : la version 0.73 de l'émulateur pour des connexions à distance est maintenant disponible et intègre plusieurs corrections
FastMail perdrait des clients en Australie depuis l'adoption de lois anti-chiffrement et ferait face à des demandes de transfert de ses opérations
Nombreux sont les produits VPN qui semblent être distincts mais sont tous gérés par la même poignée d'entreprises, d'après une enquête