Saviez-vous que vous pouvez exécuter une ligne de commande Linux sur votre appareil iOS? Vous demandez peut-être: « pourquoi voudrais-je utiliser des applications textuelles sur mon petit iPhone? »OK, assez juste. C’est une question assez raisonnable. Mais si vous lisez Opensource.com , vous connaissez probablement la réponse: les utilisateurs de Linux veulent pouvoir utiliser n’importe quel appareil, et ils veulent également utiliser leurs propres personnalisations.
Et surtout, ils veulent un défi.
J’ai un iPad 2 Mini de sept ans qui fonctionne toujours bien pour lire des livres électroniques et d’autres tâches. Mais je veux aussi l’utiliser pour accéder à la ligne de commande pour les applications et ma suite de programmes et de scripts dont je ne peux pas me passer. Je veux l’environnement auquel je suis habitué, ainsi que mon environnement de développement standard. Voici comment je l’ai fait.
Se connecter à un clavier
Utiliser la ligne de commande pour programmer sur le clavier à l’écran d’un téléphone ou d’une tablette n’est pas très amusant. Je recommande de connecter un clavier externe, soit via Bluetooth, soit en utilisant un adaptateur de kit de connexion de caméra pour connecter un clavier filaire (ma préférence). Brancher mon clavier split avantage Kinesis dans mon iPhone 6 donne des optiques étranges, comme le cyberdeck d’un corp du jeu de rôle classique Shadowrun.
Obtenir un shell sur iOS
Vous avez deux options pour exécuter un système Linux complet sur iOS:
- Secure shell (SSH) dans un ordinateur Linux
- Exécutez un système virtualisé à l’aide d’Alpine Linux avec iSH, qui est open source, mais doit être installé à l’aide de l’application TestFlight propriétaire d’Apple
Alternativement, il existe deux applications d’émulateur de terminal open source qui fournissent des outils open source dans un environnement restreint. C’est l’option la plus limitée — elle ne vous permet pas vraiment d’exécuter Linux, mais vous utilisez des outils Linux. Il existe de lourdes restrictions sur ce que vous pouvez faire sur l’appareil avec ces applications, mais elles vous offrent des fonctionnalités de ligne de commande.
Je vais examiner l’approche la plus simple avant d’explorer des solutions plus difficiles.
Option 1: Un shell en bac à sable
L’une des façons les plus simples de commencer est avec l’application iOS LibTerm. Il s’agit d’un shell de ligne de commande open source en boîte à sable avec plus de 80 commandes regroupées dans une application à 0 $. Il est livré avec Python 2.7, Python 3.7, Lua, C, Clang, etc.
Dans le même ordre d’idées, a-Shell est décrit comme une « interface utilisateur basée sur du texte pour une plate-forme basée sur un écran. »a-Shell est open source, en développement actif, donne accès au système de fichiers et est livré avec Lua, Python, Tex, Vim, JavaScript, C et C++, ainsi que Clang et Clang++. Il vous permet même d’installer des packages Python avec pip.
Option 2 : SSH anywhere
Une étape supplémentaire du téléchargement d’une application consiste à configurer un client SSH. Depuis longtemps, il est possible d’utiliser l’une des nombreuses applications client SSH sur iOS pour se connecter à un serveur exécutant une distribution Linux ou un BSD. L’avantage d’utiliser SSH est que votre serveur peut exécuter n’importe quelle distribution avec n’importe quel logiciel que vous aimez. Vous travaillez à distance et votre sortie est acheminée vers l’émulateur de terminal de votre appareil iOS.
Blink shell est une application SSH open source payante populaire. En dehors du petit écran, l’utilisation de ce logiciel s’apparente à une connexion à un serveur via toute autre invite de commande. Le terminal de Blink est magnifique, avec un certain nombre de thèmes inclus et la possibilité de créer vos propres thèmes, y compris la personnalisation et l’ajout de nouvelles polices.
Option 3: Exécuter Linux
Utiliser SSH pour se connecter à un serveur sous Linux est un excellent moyen d’accéder à une invite, mais cela nécessite un accès à un serveur externe et une connexion. Ce n’est pas la pire barrière à l’entrée, mais ce n’est pas complètement négligeable, et vous voudrez peut-être utiliser Linux sans cette exigence de serveur.
Si c’est votre cas, vous devrez sortir quelque chose d’un peu plus à la pointe. TestFlight est un service propriétaire permettant de déployer des applications en développement avant qu’elles ne soient soumises à l’App Store d’Apple. Vous pouvez télécharger l’application TestFlight depuis la boutique, puis vous inscrire à un certain nombre d’applications de test. Les applications de TestFlight autorisent un nombre limité de bêta-testeurs externes (généralement jusqu’à 10 000) pendant une durée limitée. Pour télécharger une application de test, vous devez accéder à un lien directement depuis votre appareil, qui se trouve généralement sur le site Web du développeur de l’application de test.
Exécutez Alpine Linux avec iSH
iSH est une application TestFlight open source qui exécute une machine virtuelle avec la distribution Alpine Linux prête à l’emploi (mais vous pouvez exécuter d’autres distributions avec un peu plus de bricolage).
Une mise en garde importante : c’est expérimental. Étant donné que iSH est actuellement une application de test, ne vous attendez pas à un service permanent ou robuste. Les applications TestFlight sont limitées dans le temps. Ma construction actuelle dure 60 jours. Cela signifie que dans 60 jours, je serai en lock-out et que je devrai rejoindre la prochaine phase de test d’iSH. De plus, je perdrai mes fichiers à moins de les exporter avec des fichiers sur iOS ou de les sauvegarder sur un hôte Git ou avec SSH. Pour être clair: Ne comptez pas sur cela pour continuer à travailler! Ne mettez rien ici qui soit essentiel! Sauvegardez votre travail ailleurs!
Installer iSH
Commencez par installer TestFlight via l’App Store. Ensuite, installez iSH en obtenant le lien d’installation via son site Web. Il existe une autre méthode d’installation qui utilise l’AltStore, mais je ne l’ai pas essayé. Ou, si vous avez un compte développeur payant, vous pouvez télécharger le dépôt d’iSH depuis GitHub et le déployer vous-même.
À l’aide du lien, TestFlight installe une application iSH sur votre appareil. Comme toute autre application, elle apparaît sur votre écran avec une icône.
Gérer les paquets
iSH exécute un émulateur x86 avec Alpine Linux. Alpine est une petite distribution de moins de 5 Mo. C’était la première fois que je courais Alpine, et je pensais que je serais frustré par une distribution aussi minimale, mais j’ai vraiment apprécié.
ish-installer.png
(Lee Tusman, CC BY-SA 4.0)
Alpine utilise le gestionnaire de paquets apk, qui est plus simple que même apt ou pacman.
Pour installer un paquet :
apk add package
Pour supprimer un paquet :
apk del package
Trouvez d’autres commandes et informations avec:
apk --help
Mettez à jour le gestionnaire de paquets:
apk updateapk upgrade
Obtenez un éditeur de texte
L’éditeur de texte par défaut d’Alpine est Vi, mais je préfère Vim, alors je l’ai installé:
apk add vim
Vous peut installer Nano ou Emacs, si vous préférez.
Changer la coquille
Je ne sais pas pour vous, mais j’ai besoin de la coquille de poisson. D’autres préfèrent Bash ou Zsh. Mais Alpine utilise des cendres! Le frêne est une fourche de coquille de tableau de bord, elle-même une fourche de la coquille originale de frêne ou d’Almquist. Il est conçu pour la vitesse. J’ai décidé d’échanger la vitesse en faveur de l’auto-complétion intégrée, de la couleur, du contrôle des touches Vim et de la coloration syntaxique que je connais et que j’aime dans fish shell.
Installer fish:
apk add fish
Si vous voulez Bash et ses complétions et pages de manuel à la place, vous devez les installer et quelques choses supplémentaires:
apk add bash bash-doc bash-completion
L’idéologie minimaliste d’Alpine signifie généralement que certains programmes qui seraient un seul paquet dans d’autres distributions sont divisés en plusieurs paquets plus petits. Cela signifie également que vous pouvez personnaliser et réduire votre système exactement comme vous le souhaitez.
Vous trouverez plus de détails sur l’installation de Bash dans ce tutoriel.
Changer le shell par défaut
Après avoir installé fish, vous pouvez passer temporairement à celui-ci et l’essayer en tapant fish
et en le déposant dans le shell. Mais je veux faire de fish mon shell par défaut, et la commande chsh
à laquelle je suis habitué des autres distributions ne fonctionne pas.
Tout d’abord, découvrez où fish est installé:
which fish
Ma sortie:
/usr/bin/fish
Ensuite, modifiez le shell de connexion pour utiliser fish. Vous pouvez utiliser n’importe quel éditeur avec lequel vous êtes à l’aise. Si vous êtes débutant, installez Nano (avec apk add nano
) afin de pouvoir modifier les fichiers de configuration et les enregistrer avec CTRL + X, confirmer et quitter.
Mais j’ai utilisé Vim:
vim /etc/passwd
Ma première ligne était:
root:x:0:0:root:/root:/bin/ash
Pour que fish soit la valeur par défaut, changez cette ligne en:
root:x:0:0:root:/root:/usr/bin/fish
Puis enregistrez et quittez.
Je suis sûr qu’il existe un bon moyen de ré-approvisionner le shell afin que vous puissiez commencer à l’utiliser tout de suite. Mais je ne suis pas sûr, je recommande donc de revenir au navigateur de l’application, de quitter le shell de force et, pour faire bonne mesure, de fermer et de redémarrer votre iPad ou votre iPhone. Rouvrez iSH, et maintenant, en plus du « Bienvenue chez Alpine! »message et informations sur la mise en route de l’apk, vous verrez le message de bienvenue de connexion au poisson par défaut: Bienvenue à fish, la coquille interactive conviviale. Hourra!
ish.png
(Lee Tusman, CC BY-SA 4.0)
Configurer Python et pip
J’ai décidé d’ajouter Python (version 3.x), pas seulement pour pouvoir écrire du code mais parce que je m’appuie sur plusieurs programmes Python. Installez-le:
apk add python3
Bien que Python 2.x est obsolète, vous pouvez toujours l’installer:
apk add python
Installez le gestionnaire de paquets Python, pip et setuptools:
python3 -m ensurepip --default-pip
Il faut un certain temps pour installer et configurer le gestionnaire de paquets, alors attendez.
Ensuite, vous pouvez télécharger curl, l’outil de transfert de réseau:
apk add curl
Lire le manuel
Fish utilise l’auto-complétion intégrée basée sur les pages de manuel. Comme les autres utilisateurs de ligne de commande, je me fie au manuel man
, et Alpine ne vient pas avec son installation. Je l’ai donc installé avec le pager less:
apk add man man-pages less less-doc
En plus de man, j’utilise le fabuleux projet pages tldr, qui fournit des pages de manuel simplifiées et axées sur la communauté.
Je l’ai installé avec pip:
pip install tldr
La commande tldr
se connecte au web pour récupérer des pages chaque fois qu’elle rencontre une demande pour une nouvelle. Si vous avez besoin d’apprendre à utiliser une commande, vous pouvez simplement taper quelque chose comme tldr curl
pour obtenir une explication en anglais simple et de bons exemples d’utilisation de la commande.
Vous pouvez, bien sûr, automatiser tout ce travail d’installation avec des fichiers dot ou un script d’installation, mais cela ne rentrerait pas vraiment dans la manière Alpine de personnaliser une installation minimale exactement selon vos spécifications. D’ailleurs, ça n’a pas pris si longtemps, n’est-ce pas?
En savoir plus
Le wiki iSH contient une page « ce qui fonctionne » avec des rapports sur les paquets qui fonctionnent actuellement. Il est à noter que npm ne semble pas fonctionner pour le moment.
Une autre page wiki explique comment vous pouvez accéder aux fichiers iSH depuis l’application Fichiers iOS. C’est une façon de déplacer et de transférer des fichiers.