Wussten Sie, dass Sie eine Linux-Befehlszeile auf Ihrem iOS-Gerät ausführen können? Sie fragen sich vielleicht: „Warum sollte ich textbasierte Anwendungen auf meinem winzigen iPhone verwenden?“ OK, fair genug. Das ist eine ziemlich vernünftige Frage. Aber wenn du liest Opensource.com , Sie kennen wahrscheinlich die Antwort: Linux-Benutzer möchten in der Lage sein, jedes Gerät zu verwenden, und sie möchten auch ihre eigenen Anpassungen verwenden.
Und vor allem wollen sie eine Herausforderung.
Ich habe ein sieben Jahre altes iPad 2 Mini, das immer noch gut zum Lesen von E-Books und anderen Aufgaben geeignet ist. Aber ich möchte es auch verwenden, um auf die Befehlszeile für Anwendungen und meine Suite von Programmen und Skripten zuzugreifen, auf die ich nicht verzichten kann. Ich möchte die Umgebung, an die ich gewöhnt bin, sowie meine Standardentwicklungsumgebung. So habe ich es gemacht.
Verbindung zu einer Tastatur herstellen
Die Befehlszeile zum Programmieren auf der Bildschirmtastatur eines Telefons oder Tablets zu verwenden, macht nicht viel Spaß. Ich empfehle, eine externe Tastatur anzuschließen, entweder über Bluetooth oder mithilfe eines Camera Connection Kit-Adapters, um eine kabelgebundene Tastatur anzuschließen (meine Präferenz). Das Anschließen meiner Kinesis Advantage Split-Tastatur an mein iPhone 6 sorgt für eine seltsame Optik, wie das Cyberdeck eines Unternehmens aus dem klassischen Rollenspiel Shadowrun.
Holen Sie sich eine Shell unter iOS
Sie haben zwei Möglichkeiten, ein komplettes Linux-System unter iOS auszuführen:
- Secure Shell (SSH) in einen Linux-Computer
- Führen Sie ein virtualisiertes System mit Alpine Linux mit iSH aus, das Open Source ist, aber mit Apples proprietärer TestFlight-App installiert werden muss
Alternativ gibt es zwei Open-Source-Terminalemulator-Apps, die Open-Source-Tools in einer eingeschränkten Umgebung bereitstellen. Dies ist die eingeschränkteste Option — Sie können Linux nicht wirklich ausführen, aber Sie führen Linux-Tools aus. Es gibt starke Einschränkungen, was Sie mit diesen Apps auf dem Gerät tun können, aber sie erhalten einige Befehlszeilenfunktionen.
Ich werde mir den einfachsten Ansatz ansehen, bevor ich anspruchsvollere Lösungen untersuche.
Option 1: Eine Sandbox-Shell
Eine der einfachsten Möglichkeiten, um loszulegen, ist mit der iOS-App LibTerm. Dies ist eine Sandbox-Open-Source-Befehlszeilen-Shell mit mehr als 80 Befehlen, die in einer $ 0-App gebündelt sind. Es wird mit Python 2.7, Python 3.7, Lua, C, Clang und mehr ausgeliefert.
In ähnlicher Weise ist a-Shell, beschrieben als „textbasierte Benutzeroberfläche für eine bildschirmbasierte Plattform.“ a-Shell ist Open Source, in aktiver Entwicklung, gewährt Zugriff auf das Dateisystem und wird mit Lua, Python, Tex, Vim, JavaScript, C und C ++ sowie Clang und Clang ++ ausgeliefert. Sie können sogar Python-Pakete mit pip installieren.
Option 2: SSH anywhere
Ein Schritt nach dem Herunterladen einer App ist die Konfiguration eines SSH-Clients. Seit langem ist es möglich, eine der vielen SSH-Client-Apps unter iOS zu verwenden, um eine Verbindung zu einem Server herzustellen, auf dem eine Linux-Distribution oder BSD ausgeführt wird. Der Vorteil der Verwendung von SSH besteht darin, dass auf Ihrem Server jede beliebige Distribution mit beliebiger Software ausgeführt werden kann. Sie arbeiten remote und Ihre Ausgabe wird nur an den Terminalemulator Ihres iOS-Geräts weitergeleitet.
Blink Shell ist eine beliebte kostenpflichtige Open-Source-SSH-App. Außerhalb des kleinen Bildschirms ähnelt die Verwendung dieser Software der Verbindung zu einem Server über eine andere Eingabeaufforderung. Das Terminal von Blink sieht wunderschön aus, mit einer Reihe von enthaltenen Themen und der Möglichkeit, eigene Themen zu erstellen, einschließlich Anpassen und Hinzufügen neuer Schriftarten.
Option 3: Run Linux
Die Verwendung von SSH zum Herstellen einer Verbindung zu einem Server unter Linux ist eine großartige Möglichkeit, auf eine Eingabeaufforderung zuzugreifen, erfordert jedoch Zugriff auf einen externen Server und eine Verbindung. Dies ist nicht die schlimmste Eintrittsbarriere, aber es ist nicht völlig vernachlässigbar, und Sie möchten vielleicht Linux ohne diese Serveranforderung verwenden.
Wenn das dein Fall ist, musst du etwas mehr auf der Schneide ausbrechen. TestFlight ist ein proprietärer Dienst zum Bereitstellen von Apps in der Entwicklung, bevor sie an Apples App Store gesendet werden. Sie können die TestFlight-App aus dem Store herunterladen und sich dann für eine Reihe von Testanwendungen anmelden. Apps in TestFlight erlauben eine begrenzte Anzahl externer Beta-Tester (in der Regel bis zu 10.000) für eine begrenzte Zeit. Um eine Test-App herunterzuladen, müssen Sie direkt von Ihrem Gerät aus auf einen Link zugreifen, der sich normalerweise auf der Website des Entwicklers der Test-App befindet.
Run Alpine Linux with iSH
iSH ist eine Open-Source-TestFlight-App, die eine virtuelle Maschine mit der Alpine Linux-Distribution sofort ausführt (Sie können jedoch auch andere Distributionen mit etwas mehr Bastelei ausführen).
Eine wichtige Einschränkung: Dies ist experimentell. Da iSH derzeit eine Test-App ist, erwarten Sie keinen dauerhaften oder robusten Service. Testflug-Apps sind zeitlich begrenzt. Mein aktueller Build dauert 60 Tage. Das bedeutet, dass ich in 60 Tagen ausgesperrt werde und wieder an der nächsten Testphase der iSH teilnehmen muss. Außerdem verliere ich meine Dateien, es sei denn, ich exportiere sie mit Dateien unter iOS oder sichere sie auf einem Git-Host oder mit SSH. Um es klar zu sagen: Verlassen Sie sich nicht darauf, um weiterzuarbeiten! Legen Sie hier nichts an, was wesentlich ist! Sichern Sie Ihre Arbeit an anderer Stelle!
ISH installieren
Installieren Sie zunächst TestFlight über den App Store. Installieren Sie dann iSH, indem Sie den Installationslink über die Website abrufen. Es gibt eine andere Installationsmethode, die den AltStore verwendet, aber ich habe es nicht versucht. Wenn Sie über ein kostenpflichtiges Entwicklerkonto verfügen, können Sie das Repo von iSH von GitHub herunterladen und selbst bereitstellen.
Über den Link installiert TestFlight eine iSH-App auf Ihrem Gerät. Wie jede andere App wird sie auf Ihrem Bildschirm mit einem Symbol angezeigt.
Pakete verwalten
iSH führt einen x86-Emulator mit Alpine Linux aus. Alpine ist eine winzige Distribution unter 5 MB. Dies war mein erstes Mal mit Alpine, und ich dachte, ich würde mit solch einer minimalen Distribution frustriert sein, aber ich habe es wirklich genossen.
ish-installieren.png
(Lee Tusman, CC BY-SA 4.0)
Alpine verwendet den apk-Paketmanager, der einfacher ist als apt oder pacman.
So installieren Sie ein Paket:
apk add package
So entfernen Sie ein Paket:
apk del package
Weitere Befehle und Informationen finden Sie unter:
apk --help
Aktualisieren Sie den Paketmanager:
apk updateapk upgrade
Holen Sie sich einen Texteditor
Alpines Standard-Texteditor ist Vi, aber ich bevorzuge Vim, also habe ich ihn installiert:
apk add vim
Sie könnten Nano oder Emacs , wenn Sie es vorziehen.
Ändern Sie die Schale
Ich weiß nicht, wie es Ihnen geht, aber ich brauche die Fischschale. Andere Leute bevorzugen Bash oder Zsh. Aber Alpine verwendet Asche! Ash ist eine Gabel von Dash Shell, selbst eine Gabel der ursprünglichen Ash oder Almquist Shell. Es ist auf Geschwindigkeit ausgelegt. Ich beschloss, die Geschwindigkeit zugunsten der integrierten automatischen Vervollständigung, der Farbe, der Vim-Tastensteuerung und der Syntaxhervorhebung zu tauschen, die ich in Fish Shell kenne und liebe.
Install fish:
apk add fish
Wenn Sie stattdessen Bash und seine Vervollständigungen und Manpages wollen, müssen Sie sie und einige zusätzliche Dinge installieren:
apk add bash bash-doc bash-completion
Alpines minimalistische Ideologie bedeutet im Allgemeinen, dass einige Programme, die in anderen Distributionen ein einzelnes Paket wären, in mehrere kleinere Pakete aufgeteilt werden. Dies bedeutet auch, dass Sie Ihr System genau nach Ihren Wünschen anpassen und verkleinern können.
Weitere Informationen zur Installation von Bash finden Sie in diesem Tutorial.
Ändern Sie die Standard-Shell
Nach der Installation von fish können Sie vorübergehend zu fish wechseln und es ausprobieren, indem Sie fish
eingeben und in die Shell fallen lassen. Aber ich möchte fish zu meiner Standard-Shell machen, und der Befehl chsh
, den ich von anderen Distributionen gewohnt bin, funktioniert nicht.
Finden Sie zuerst heraus, wo fish installiert ist:
which fish
Meine Ausgabe:
/usr/bin/fish
Bearbeiten Sie als nächstes die Anmeldeshell, um fish zu verwenden. Sie können jeden Editor verwenden, mit dem Sie vertraut sind. Wenn Sie ein Anfänger sind, installieren Sie Nano (mit apk add nano
), damit Sie Konfigurationsdateien bearbeiten und mit STRG+ X speichern, bestätigen und beenden können.
Aber ich habe Vim verwendet:
vim /etc/passwd
Meine erste Zeile war:
root:x:0:0:root:/root:/bin/ash
Um fish zum Standard zu machen, ändern Sie diese Zeile in:
root:x:0:0:root:/root:/usr/bin/fish
Dann speichern und beenden.
Ich bin mir sicher, dass es eine gute Möglichkeit gibt, die Shell neu zu beschaffen, damit Sie sie sofort verwenden können. Aber ich bin mir nicht sicher, also empfehle ich, zum App-Browser zurückzukehren, die Shell zu beenden und aus gutem Grund Ihr iPad oder iPhone herunterzufahren und neu zu starten. Wiedereröffnung iSH, und jetzt, zusätzlich zu den „Welcome to Alpine!“ nachricht und Informationen über die ersten Schritte mit apk, Sie werden die Standard-Fisch Login Willkommensnachricht sehen: Willkommen bei Fisch, die freundliche interaktive Shell. Hurra!
ish.png
(Lee Tusman, CC BY-SA 4.0)
Python und pip einrichten
Ich habe beschlossen, Python (Version 3.x), nicht nur, um Code schreiben zu können, sondern weil ich mich auf mehrere Python-Programme verlasse. Installieren Sie es:
apk add python3
Obwohl Python 2.x ist veraltet, Sie können es trotzdem installieren:
apk add python
Installieren Sie den Python-Paketmanager, pip und setuptools:
python3 -m ensurepip --default-pip
Die Installation und Einrichtung des Paketmanagers dauert einige Zeit.
Dann können Sie curl, das Netzwerkübertragungstool, herunterladen:
apk add curl
Lesen Sie das Handbuch
Fish verwendet eine integrierte automatische Vervollständigung basierend auf Manpages. Wie andere Befehlszeilenbenutzer verlasse ich mich auf das Handbuch man
, und Alpine wird nicht installiert. Also habe ich es zusammen mit dem less-Pager installiert:
apk add man man-pages less less-doc
Zusätzlich zu man verwende ich das fabulous tldr pages-Projekt, das vereinfachte, Community-gesteuerte Man-Seiten bereitstellt.
Ich habe es mit pip installiert:
pip install tldr
Der Befehl tldr
verbindet sich mit dem Web, um Seiten abzurufen, wenn eine Anfrage nach einer neuen gestellt wird. Wenn Sie lernen müssen, wie man einen Befehl verwendet, können Sie einfach etwas wie tldr curl
eingeben, um eine einfache englische Erklärung und gute Beispiele für die Verwendung des Befehls zu erhalten.Sie könnten natürlich all diese Installationsarbeiten mit Dotfiles oder einem Installationsskript automatisieren, aber das würde nicht wirklich in die alpine Art fallen, eine minimale Installation genau an Ihre Spezifikationen anzupassen. Außerdem hat es nicht so lange gedauert, oder?
Mehr erfahren
Das iSH Wiki enthält eine „what works“-Seite mit Berichten darüber, welche Pakete derzeit funktionieren. Beachten Sie, dass npm zu diesem Zeitpunkt nicht zu funktionieren scheint.
Auf einer anderen Wiki-Seite wird erläutert, wie Sie über die iOS-Datei-App auf iSH-Dateien zugreifen können. Dies ist eine Möglichkeit, Dateien zu verschieben und zu übertragen.