La configuration de l'environnement dans Termux est similaire à celle d'une distribution Linux moderne. Cependant, fonctionner sous Androïde implique
Différences avec Linux
La configuration de l'environnement dans Termux est similaire à celle d'une distribution Linux moderne. Cependant, fonctionner sous Androïde implique plusieurs différences importantes.
Termux n'est pas conforme FHS
Termux ne suit pas le standard de hiérarchie des systèmes de fichiers contrairement à la majorité des distributions Linux. Vous ne pouvez pas trouver de répertoires comme / bin, / etc, / usr, / tmp et autres à l'emplacement habituel. Ainsi, tous les programmes doivent être corrigés et recompilés pour répondre aux exigences de l'environnement Termux, sinon ils ne pourront pas trouver leurs fichiers de configuration ou d'autres données.
Vous pouvez avoir un problème lors de l'exécution de scripts qui ont des shebangs standard (par exemple #! / Bin / sh). Utilisez le
[termux-fix-shebang]
script pour modifier ces fichiers avant de les exécuter. Les versions récentes de Termux fournissent un package spécial (termux-exec) qui permet l'utilisation de she-bangs standard.
La plupart des paquets ont des dépendances de bibliothèques partagées qui sont installées dans $ PREFIX/lib. Sur les appareils antérieurs à Android 7, Termux exporte la variable spéciale $ LD_LIBRARY_PATH qui indique à l'éditeur de liens où trouver les fichiers de bibliothèque partagés. Sur Android 7 ou version ultérieure, l'attribut d'en-tête DT_RUNPATH ELF est utilisé à la place de LD_LIBRARY_PATH.
Si vous avez encore besoin d'une configuration de système de fichiers Linux classique pour une raison quelconque, vous pouvez essayer d'utiliser termux-chroot du package 'proot':
[$ pkg install proot$ termux-chroot$ ls / usrbin doc etc inclure lib libexec share tmp var]
L'utilitaire termux-chroot peut être très utile si vous utilisez un logiciel personnalisé qui nécessite des chemins standard tels que /tmp, /etc, /usr pour être disponibles.
Termux utilise la libc Bionic
Pour avoir la meilleure compatibilité avec Android OS et éliminer le besoin de maintenir des chaînes d'outils personnalisées, nous compilons tous nos packages avec Android NDK. Les binaires résultants sont liés à la libc Bionic (fichiers libc.so, libm.so, libdl.so de / system / lib ou / system / lib64).
L'utilisation de la libc fournie par l'incompatibilité Android et FHS désactive la possibilité d'exécuter des packages natifs copiés à partir de distributions Linux:
- Les programmes liés dynamiquement ne s'exécuteront pas en raison d'un éditeur de liens attendu dans un emplacement inexistant (/ lib) et d'une discordance ABI libc.
- Les programmes liés statiquement (uniquement ceux en réseau) ne pourront pas résoudre les noms DNS. GNU libc n'autorise normalement pas la liaison statique avec le résolveur. De plus, le fichier /etc/resolv.conf n'existe pas sur Android.
- Sur Android 8 non rooté ou plus récent, les programmes liés statiquement ne fonctionneront pas en raison de problèmes avec le filtre seccomp.
Cependant, ces restrictions peuvent être contournées avec
[proot]
Le système de fichiers racine est stocké sous forme de données d'application ordinaires
Le système de fichiers racine et le répertoire de base de l'utilisateur se trouvent dans le répertoire de données d'application privé qui réside sur la partition / data. Les chemins vers ces répertoires sont respectivement exposés comme $PREFIX et $HOME.
Vous ne pouvez pas déplacer $PREFIX vers un autre emplacement car tous les programmes s'attendent à ce que $PREFIX ne soit pas modifié. De plus, vous ne pouvez pas avoir de binaires, de liens symboliques et d'autres fichiers de $PREFIX sur sdcard. La raison est simple - le système de fichiers ne prend pas en charge les autorisations Unix, les liens symboliques, les sockets, etc.
Important : si vous désinstallez l'application ou effacez les données, les répertoires $PREFIX et $ HOME seront également effacés. Avant de faire cela, assurez-vous que toutes les données importantes sont sauvegardées.
Termux est mono-utilisateur
Les applications Androïde sont en bac à sable et ont leur propre identifiant d'utilisateur Linux et leur propre étiquette SELinux. Termux n'est pas une exception et tout dans Termux est exécuté avec le même identifiant d'utilisateur que l'application elle-même.
Tous nos packages (sauf ceux réservés à la racine) sont corrigés pour supprimer tout multi-utilisateur, setuid/setgid et d'autres fonctionnalités similaires. Nous avons également changé les ports par défaut pour les packages de serveur: ftpd, httpd et sshd ont leurs ports par défaut définis sur 8021, 8080 et 8022 respectivement.
Vous disposez d'un accès gratuit en lecture-écriture à tous les composants de l'application, y compris $ PREFIX. Soyez prudent car il est très facile de casser des choses en supprimant ou en écrasant accidentellement des fichiers dans $PREFIX.
COMMENTAIRES