
Saviez-vous qu'il est possible d'exécuter une ligne de commande Linux sur un appareil iOS ? Vous vous demandez peut-être : « Pourquoi devrais-je utiliser des applications textuelles sur mon iPhone ? » C'est une question légitime. Mais si vous lisez Opensource.com, vous savez probablement déjà pourquoi : les utilisateurs de Linux souhaitent pouvoir travailler avec sur n'importe quel appareil tout en gardant leurs propres configurations.
Mais surtout, ils aspirent à résoudre des problèmes complexes.
J'ai un iPad 2 Mini de sept ans qui est encore assez bon pour lire des livres électroniques et d'autres tâches. Cependant, je veux également l'utiliser pour avoir accès à la ligne de commande de mes applications avec mon ensemble de programmes et de scripts, sans lesquels je ne peux pas travailler. J'ai besoin d'un environnement auquel je suis habitué, ainsi que de mon environnement de développement standard. Voici comment j'ai réussi à l'obtenir.
Connexion au clavier
Travailler avec la ligne de commande pour la programmation via le clavier à l'écran du téléphone ou de la tablette est assez inconfortable. Je recommande de connecter un clavier externe, soit via Bluetooth, soit en utilisant un adaptateur de caméra pour brancher un clavier filaire (c'est ce que j'ai choisi). Lorsque je connecte un clavier séparé Kinesis Advantage à un iPhone 6, le résultat est un appareil étrange qui ressemble à un d'un classique Shadowrun.
Installer un shell sur iOS
Pour exécuter un système Linux complet sur iOS, il existe deux options :
- Secure shell (SSH), connecté à un ordinateur sous Linux
- Exécuter un système virtuel avec Alpine Linux utilisant iSH, qui est open source, mais doit être installé via l'application propriétaire TestFlight d'Apple.
Alternativement, il existe deux applications émulateurs de terminal open source qui permettent de travailler avec des outils open source dans un environnement limité. C'est la version la plus minimaliste : en fait, vous ne lancez pas Linux, mais des outils Linux. En utilisant ces applications, il y a des limitations strictes, mais vous obtenez une fonctionnalité partielle de la ligne de commande.
Avant de passer à des solutions plus complexes, je vais examiner la manière la plus simple.
Option 1 : shell dans un « sandbox »
L'un des moyens les plus simples est d'installer une application pour iOS . C'est Un shell dans un environnement « sandbox » avec le support de plus de 80 commandes pour un prix de zéro dollars. Il est livré avec Python 2.7, Python 3.7, Lua, C, Clang et bien d'autres.
Une fonctionnalité à peu près équivalente est proposée par , décrit par ses développeurs comme « une interface utilisateur de test pour une plateforme à entrée d'écran ». Les sources de a-Shell sont disponibles en , il est 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 qu'avec Clang et Clang++. Il permet même d'installer des packages Python via pip.
Option 2 : SSH
Un autre pas en avant par rapport au téléchargement d'application est la configuration d'un client SSH. Depuis longtemps, nous pouvons utiliser l'un des nombreux clients SSH disponibles sur iOS pour nous connecter à un serveur exécutant Linux ou BSD. L'avantage de l'utilisation de SSH est que sur le serveur, n'importe quelle distribution avec n'importe quel logiciel peut fonctionner. Vous travaillez à distance et les résultats sont simplement transmis à l'émulateur de terminal sur l'appareil iOS.
— est une application SSH payante populaire sur . Si l'on ne tient pas compte de la petite taille de l'écran, l'utilisation de ce logiciel ressemble à une connexion à un serveur via n'importe quelle autre ligne de commande. Le terminal Blink est magnifique, propose de nombreux thèmes prêts à l'emploi et a une fonction permettant de créer les siens, y compris la possibilité de configurer et d'ajouter de nouvelles polices.
Option 3 : exécuter Linux
Utiliser SSH pour se connecter à un serveur sous Linux est un excellent moyen d'accéder à la ligne de commande, mais cela nécessite un serveur externe et une connexion réseau. Ce n'est pas le plus grand obstacle, mais on ne peut pas l'ignorer complètement, donc vous pourriez avoir besoin de travailler avec Linux sans serveur.
Si c'est votre cas, vous devrez faire un pas de plus. — est un service propriétaire pour installer des applications en cours de développement avant qu'elles ne soient publiées sur l'Apple App Store. L'application TestFlight peut être installée depuis l'App Store, puis utilisée pour tester des applications. Les applications sur TestFlight permettent à un nombre limité de bêta-testeurs (généralement jusqu'à 10 000) de les utiliser pendant une période limitée. Pour télécharger une application de test, vous devez accéder à un lien depuis votre appareil, généralement situé sur le site Web du développeur de l'application de test.
Lancement d'Alpine Linux avec iSH
— est une application open-source TestFlight qui exécute une machine virtuelle avec une distribution prête à l'emploi (avec un peu d'effort, il est possible de lancer d'autres distributions).
Caractéristique importante : l'application est expérimentale. Comme iSH est actuellement une application de test, ne vous attendez pas à un fonctionnement constant et fiable. Les applications TestFlight sont limitées dans le temps. Ma version actuelle ne fonctionnera que pendant 60 jours. Cela signifie qu'après 60 jours, je serai exclu et je devrai me reconnecter au prochain cycle de tests d'iSH. De plus, je perds tous mes fichiers si je ne les exporte pas via Files sur iOS ou si je ne les copie pas sur un hébergeur Git ou . En d'autres termes : Ne comptez pas sur le fait que tout cela continuera à fonctionner ! N'y mettez rien d'important pour vous ! Faites des sauvegardes à un autre endroit !
Installation d'iSH
Commencez par installer depuis l'App Store. Puis installez iSH, sur le site Web de l'application. Il existe également une autre méthode d'installation utilisant AltStore, mais je ne l'ai pas essayée. Ou, si vous avez un compte développeur payant, vous pouvez télécharger le dépôt iSH depuis GitHub et l'installer vous-même.
Avec le lien TestFlight, l'application iSH sera installée sur votre appareil. Comme pour toute autre application, une icône apparaîtra à l'écran.
Gestion des 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 travaillais avec Alpine, donc je pensais que ce minimalisme serait ennuyeux, mais en réalité, j'ai beaucoup aimé.

Alpine utilise un gestionnaire de paquets , qui est plus simple que même apt ou pacman.
Comment installer un paquet :
apk add packageComment supprimer un paquet :
apk del packageComment connaître d'autres commandes et informations :
apk --helpMise à jour du gestionnaire de paquets :
apk mise à jour
apk mise à niveauInstallation de l'é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 ajouter vimSi vous le souhaitez, vous pouvez installer Nano ou Emacs.
Changement de shell
Je ne sais pas pour vous, mais j'avais besoin de . D'autres personnes préfèrent ou . Cependant, Alpine utilise ash ! Ash est un fork du shell Dash, qui est lui-même un fork de l'original ash, ou . Sa priorité est la vitesse. J'ai décidé d'échanger la vitesse contre l'auto-complétion intégrée, les couleurs, les raccourcis clavier Vim et la coloration syntaxique que j'apprécie et que je connais grâce à fish shell.
Installation de fish :
apk ajouter fishSi vous avez besoin de Bash avec son auto-complétion et ses pages man, alors installez-les :
apk ajouter bash bash-doc bash-completionL'idéologie minimaliste d'Alpine signifie généralement que certains programmes, qui sont un seul paquet dans d'autres distributions, seront divisés en plusieurs petits paquets. Cela signifie également que vous pouvez personnaliser et réduire la taille du système exactement comme vous le souhaitez.
Pour en savoir plus sur l'installation de Bash, consultez .
Changement de shell par défaut
Après l'installation de fish, vous pouvez temporairement passer à celui-ci en entrant fish et en passant dans le shell. Mais je veux faire de fish le shell par défaut, et la commande chsh, que j'ai utilisée dans d'autres distributions, n'a pas fonctionné.
Commençons par savoir où fish est installé :
which fishVoici ce que j'ai obtenu :
/usr/bin/fish Ensuite, changeons le shell de connexion en fish. Vous pouvez utiliser n'importe quel éditeur qui vous convient. Si vous êtes débutant, installez Nano (avec la commande apk ajouter nano), afin de pouvoir modifier les fichiers de configuration et les sauvegarder avec CTRL+X, confirmer et quitter.
Mais j'ai utilisé Vim :
vim /etc/passwdMa première ligne était comme suit :
root:x:0:0:root:/root:/bin/ashPour faire de fish le shell par défaut, modifions cette ligne comme suit :
root:x:0:0:root:/root:/usr/bin/fishPuis sauvegardons le fichier et quittons.
Je suis sûr qu'il existe un moyen approprié de changer le chemin du shell pour qu'il puisse être utilisé immédiatement. Mais je ne le connais pas, donc je recommande de revenir dans le navigateur des applications, de forcer la déconnexion du shell et, pour plus de sécurité, d'éteindre et de redémarrer l'iPad ou l'iPhone. Ouvrez à nouveau iSH et maintenant, à part le message « Bienvenue dans Alpine ! » et les informations sur le démarrage avec apk, vous verrez le message de bienvenue standard de connexion de fish : Bienvenue dans fish, le shell interactif convivial. Youpi !

Configuration de Python et pip
J'ai décidé d'ajouter (la version 3.x), non seulement pour écrire du code, mais aussi parce que j'utilise plusieurs programmes en Python. Installons-le :
apk add python3Bien que Python 2.x soit obsolète, il est également possible de l'installer :
apk add pythonInstallons le gestionnaire de paquets Python appelé pip et :
python3 -m ensurepip --default-pipL'installation et la configuration du gestionnaire de paquets prendront un certain temps, alors veuillez patienter.
Ensuite, vous pourrez télécharger un outil pour transférer des fichiers sur le réseau :
apk add curlConsulter les manuels
Fish utilise l'auto-complétion intégrée basée sur les pages man. Comme d'autres utilisateurs de la ligne de commande, j'utilise le manuel man, mais dans Alpine, il n'est pas installé. C'est pourquoi je l'ai installé avec le pager terminal :
apk add man man-pages less less-docEn plus de man, j'utilise le superbe , qui fournit des pages man simplifiées et gérées par la communauté.
Je l'ai installé avec pip :
pip install tldr Commande tldr se connecte à Internet pour obtenir des pages lorsqu'il rencontre une demande pour une nouvelle page. Si vous souhaitez savoir comment utiliser une commande, vous pouvez écrire quelque chose comme tldr curl et obtenir une description en anglais simple avec de bons exemples d'utilisation de la commande.
Bien sûr, tout ce travail d'installation peut être automatisé à l'aide de ou d'un script d'installation, mais en réalité, cela ne correspond pas vraiment à l'idéologie d'Alpine — la configuration d'une installation minimale clairement adaptée à vos besoins. De plus, cela a pris tellement de temps, non ?
Informations supplémentaires
Dans le Wiki iSH, il y a une page "" avec des rapports sur les paquets qui fonctionnent actuellement. À propos, il semble que .
Une autre page wiki explique comment depuis l'application iOS Files. C'est l'un des moyens de déplacer et de copier des fichiers.
Vous pouvez aussi installer Git (oui ! apk add git ) et pousser votre travail vers un dépôt distant ou le transmettre à un serveur via SSH. Et, bien sûr, vous pouvez télécharger et exécuter tout un tas de projets open-source formidables depuis GitHub.
Plus d'informations sur iSH sont disponibles via ces liens :
En tant que publicité
VDS propose ou Windows. Nous n'utilisons que du , le meilleur panneau de contrôle de serveurs de sa catégorie, développé en interne, et l'un des meilleurs centres de données en Russie et en UE. Ne tardez pas à commander !
Source : habr.com
