lucidiot's cybrecluster

Termux

Lucidiot Informatique 2019-03-07
Comment j'ai installé et configuré l'application la plus puissante d'Android.


Android est basé sur SELinux, une version beaucoup plus restrictive de Linux qui impose dans le noyau des limitations sur les ressources accessibles aux programmes. Cela permet une meilleure isolation mais cause aussi pas mal de problèmes pour les power users qui veulent faire plus de choses avec leurs téléphones qu'un utilisateur lambda. L'une des fonctionnalités les plus importantes pour pouvoir vraiment faire tout ce qu'on veut, y compris des choses qui n'ont pas du tout été prévues pour Android, c'est un terminal. Sous n'importe quel système Linux, il n'y aura jamais rien de plus efficace et fonctionnel qu'un terminal.

Les outils pour développeurs d'Android, notamment l'Android Debug Bridge, fournissent la possibilité d'ouvrir un terminal sur un téléphone via une connexion USB à un ordinateur, mais cela impose quand même d'avoir un ordinateur à disposition. LineageOS, autrefois Cyanogen, fournit parmi ses options cachées pour développeurs l'activation d'une application de terminal, qui reste assez limitée en raison des restrictions imposées par SELinux. Pour avoir un bon terminal, la meilleure option est Termux.

Note : Il est plus intelligent d'installer Termux via F-Droid que via le Play Store. Certains add-ons pour Termux sont payants sur le Play Store et sont gratuits sur F-Droid.

Termux va démarrer un terminal avec quelques configurations spéciales pour lui permettre de fonctionner même sans accès root, telles que des dossiers inhabituels pour les fichiers de configuration ou le dossier utilisateur. Faites donc attention lorsque vous écrivez des scripts. Busybox est installé pour fournir les outils basiques auxquels on s'attend dans un GNU/Linux sans prendre trop d'espace.

Une fois Termux lancé, on a accès à un terminal tout à fait normal, qui est configurable avec un bon nombre de thèmes préinstallés si vous ajoutez Termux:Styling. pkg est disponible en tant que gestionnaire de packages ; les packages sont spécifiques à Termux pour s'assurer que tout fonctionne dans cet environnement peu banal, mais ils ne sont pas pour autant rares ; il est possible par exemple de faire fonctionner un serveur X, ou d'installer npm si vous voulez faire du Node.js. Le wiki de Termux donne entre autres pas mal d'introductions aux capacités du terminal.

Je vous laisse l'honneur de découvrir par vous-mêmes les capacités de Termux ; ce n'est pas là le sujet exact de mon article. Je voulais surtout vous montrer comment j'ai configuré Termux sur mon téléphone pour avoir de quoi développer en Python comme si j'étais sur un des mes ordinateurs.

J'ai créé un dépôt GitLab pour tous mes fichiers de configuration, qui contient aussi un fichier setup.sh pour installer automatiquement des packages et les fichiers de configuration. Il me suffit d'exécuter ce script et je retrouve immédiatement ma configuration préférée.

Premièrement, une des fonctionnalités intéressantes quand son téléphone est rooté, c'est sudo. C'est plus complexe à obtenir qu'on pourrait le penser ; le package tsu fournit la commande su, mais pour sudo, le plus simple est d'utiliser un script Bash. Mon script d'installation clone automatiquement le script et l'installe sous le nom de sudo.

Ensuite, parce que j'aime avoir un bon shell puissant, j'utilise zsh avec oh-my-zsh, qui ajoute pas mal de plugins d'autocomplétion et des jolis prompts. J'ai amélioré mon script pour qu'il fonctionne même si je ne mets pas de .zshrc (et qu'il installe lui-même un zshrc fonctionnel), ce qui rend le script un peu mieux utilisable si vous voulez faire vos propres installations.

Pour coder, j'utilise Vim, avec Vundle en tant que gestionnaire de plug-ins. Mon script va donc exécuter vim +PluginInstall +qall pour que je dispose de tous mes plugins dès le premier démarrage.

Pour travailler avec du Python, c'est toujours mieux d'utiliser des virtualenvs pour isoler les packages et éviter des conflits de dépendances, surtout parce que Python est très utilisé pour les scripts de systèmes Linux tels que les gestionnaires de packages. J'installe donc virtualenvwrapper, une surcouche d'une surcouche du gestionnaire d'environments virtuels de Python qui simplifie beaucoup les choses. Pour disposer d'un interpréteur plus confortable que celui par défaut de Python, j'utilise IPython. Je viens de voir qu'il est possible d'utiliser Jupyter sous Termux si vous voulez avoir l'air d'un chercheur.

Bref, ce script m'est vraiment utile parce qu'il me permet de garder dans un seul fichier tous les hacks que j'ai dû faire pour avoir une installation parfaite sous Termux et de pouvoir la répéter dans l'éventualité où je change de téléphone ou réinstalle encore une fois LineageOS.

C'est avec cette installation étrange, ainsi qu'un clavier Bluetooth pour téléphone, que j'ai créé l'outil de migration qui va me permettre de convertir tous les articles de Brainshit vers les fichiers statiques de Brainshit version 5. J'ai également utilisé Termux comme une sorte de passerelle pour me connecter de façon sécurisée à mon serveur en utilisant PuTTY sur un ThinkPad R50e sous Windows XP, ainsi que pour éditer Vacances au format LaTeX, pour une impression papier en édition très limitée, dans un TGV. J'ai aussi fait rouler une locomotive à vapeur devant un chat.


Commentaires

fluffy, 2019-03-12

En prépa j'ai pas mal utilisé termux, vu que je n'avais pas d'ordinateur sous la main. J'ai vraiment adoré cette application, c'est super pratique !