wist je dat je een Linux command line kunt uitvoeren op je iOS apparaat? Je vraagt je misschien af: “waarom zou ik tekstgebaseerde applicaties op mijn kleine iPhone willen gebruiken?”OK, eerlijk genoeg. Dat is een redelijke vraag. Maar als je leest Opensource.com, je weet waarschijnlijk het antwoord: Linux gebruikers willen elk apparaat kunnen gebruiken, en ze willen ook hun eigen aanpassingen gebruiken.
en vooral willen ze een uitdaging.
Ik heb een zeven jaar oude iPad 2 Mini die nog steeds prima werkt voor het lezen van e-books en andere taken. Maar Ik wil het ook gebruiken om toegang te krijgen tot de command line voor toepassingen en mijn suite van programma ‘ s en scripts die ik niet kan lijken te doen zonder. Ik wil de omgeving waar ik aan gewend ben, evenals mijn standaard ontwikkelomgeving. Zo heb ik het gedaan.
verbinding maken met een toetsenbord
het gebruik van de opdrachtregel voor het programmeren op het schermtoetsenbord van een telefoon of tablet is niet erg leuk. Ik raad aan om een extern toetsenbord aan te sluiten, via Bluetooth of met behulp van een camera connection kit adapter om een bekabeld toetsenbord aan te sluiten (mijn voorkeur). Het aansluiten van mijn Kinesis Advantage split toetsenbord in mijn iPhone 6 zorgt voor een aantal vreemde optiek, zoals een Corp ‘ s cyberdeck van het klassieke role-playing game Shadowrun.
haal een shell op iOS
u hebt twee opties voor het draaien van een compleet Linux systeem op iOS:
- Secure shell (SSH) op een Linux-computer
- voer een gevirtualiseerd systeem uit met Alpine Linux met iSH, dat open source is, maar moet worden geà nstalleerd met Apple ‘ s eigen TestFlight app
alternatief zijn er twee open source terminal emulator apps die open source tools bieden binnen een beperkte omgeving. Dit is de meest beperkte optie—het laat je niet echt Linux draaien, maar je draait Linux tools. Er zijn zware beperkingen op wat je kunt doen op het apparaat met deze apps, maar ze krijgen je een aantal command-line functionaliteit.
Ik zal kijken naar de eenvoudigste aanpak voordat ik meer uitdagende oplossingen verkend.
Optie 1: een sandboxed shell
een van de makkelijkste manieren om te beginnen is met de iOS app LibTerm. Dit is een sandboxed open source command-line shell met 80 + opdrachten gebundeld in een $ 0 app. Het wordt geleverd met Python 2.7, Python 3.7, Lua, C, Clang, en meer.
langs soortgelijke lijnen is een-Shell, beschreven als een ” tekst-gebaseerde gebruikersinterface voor een scherm-gebaseerde platform.”a-Shell is open source, in actieve ontwikkeling, verleent toegang tot het bestandssysteem, en schepen met Lua, Python, Tex, Vim, JavaScript, C, en c++, samen met Clang en Clang++. Het staat je zelfs toe om Python pakketten te installeren met pip.
Optie 2: SSH anywhere
een stap hoger dan het downloaden van een app is het configureren van een SSH-client. Al lange tijd is het mogelijk om een van de vele SSH-client-apps op iOS te gebruiken om verbinding te maken met een server met een Linux-distro of BSD. Het voordeel van het gebruik van SSH is dat uw server elke distro kan draaien met elke software die u wilt. Je werkt op afstand, en je output wordt gewoon doorgesluisd naar de terminal emulator van je iOS-apparaat.
Blink shell is een populaire betaalde open source SSH-app. Buiten het kleine scherm, met behulp van deze software is vergelijkbaar met het verbinden met een server via een andere opdrachtprompt. Blink ’s terminal ziet er prachtig uit, met een aantal opgenomen thema’ s en de mogelijkheid om uw eigen thema ‘ s te maken, inclusief het aanpassen en toevoegen van nieuwe lettertypen.
optie 3: Linux
draaien SSH gebruiken om verbinding te maken met een server waarop Linux draait is een geweldige manier om toegang te krijgen tot een prompt, maar het vereist wel toegang tot een externe server en een verbinding. Dit is niet de ergste barrière voor toegang, maar het is niet helemaal verwaarloosbaar, en je wilt misschien Linux gebruiken zonder deze server vereiste.
als dat uw geval is, moet u iets meer op het snijvlak uit te breken. TestFlight is een eigen service voor het implementeren van in-development apps voordat ze worden ingediend bij Apple ‘ s App Store. U kunt de TestFlight-app downloaden uit de store en zich vervolgens aanmelden voor een aantal testapplicaties. Apps in TestFlight staan een beperkt aantal externe bètatesters (over het algemeen tot 10.000) voor een beperkte tijd toe. Om een test-app te downloaden, moet u rechtstreeks toegang krijgen tot een link vanaf uw apparaat, die over het algemeen wordt gevonden op de website van de ontwikkelaar van de test-app.
Run Alpine Linux met iSH
iSH is een open source TestFlight app die een virtuele machine met de Alpine Linux distro uit de doos draait (maar je kunt andere distributies draaien met een beetje meer knutselen).
een belangrijk voorbehoud: dit is experimenteel. Aangezien iSH is momenteel een test app, verwacht niet permanente of robuuste service. TestFlight apps zijn beperkt in de tijd. Mijn huidige bouw duurt 60 dagen. Dit betekent dat ik over 60 dagen buitengesloten ben en weer bij iSH ‘ s volgende testfase moet zijn. Verder verlies ik mijn bestanden tenzij ik ze exporteer met bestanden op iOS of ze back-uppen naar een Git host of met SSH. Voor de duidelijkheid: vertrouw hier niet op om verder te werken! Zet hier niets op dat essentieel is! Ga ergens anders aan het werk!
installeer iSH
aan de slag door TestFlight te installeren via de App Store. Dan ish installeren door het krijgen van de link installeren via haar website. Er is een andere installatiemethode die gebruik maakt van de AltStore, maar ik heb het niet geprobeerd. Of, als u een betaalde developer account, U kunt downloaden ish ‘ s repo van GitHub en implementeren het zelf.
met behulp van de link installeert TestFlight een iSH-app op uw apparaat. Net als elke andere app, het verschijnt op uw scherm met een pictogram.
pakketten beheren
iSH draait een x86 emulator met Alpine Linux. Alpine is een kleine, onder-5MB distro. Dit was mijn eerste keer lopen Alpine, en ik dacht dat ik zou gefrustreerd raken met zo ‘ n minimale distro, maar ik eigenlijk echt genoten.
ish-install.png
(Lee Tusman, CC BY-SA 4.0)
Alpine gebruikt de APK package manager, wat eenvoudiger is dan zelfs Apt of pacman.
een pakket installeren:
apk add package
een pakket verwijderen:
apk del package
andere commando ‘ s en info zoeken met:
apk --help
de pakketbeheerder bijwerken:
apk updateapk upgrade
haal een teksteditor
De standaard teksteditor van Alpine is Vi, maar ik geef de voorkeur aan Vim, dus installeerde ik het:
apk add vim
u kunt Nano of Emacs installeren, als je dat liever hebt.
Wijzig de schelp
Ik weet niet hoe het met u zit, maar ik heb de schelp van de vis nodig. Andere mensen geven de voorkeur aan Bash of Zsh. Maar Alpine gebruikt as! Ash is een vork van Dash shell, zelf een vork van de oorspronkelijke ash of Almquist shell. Het is ontworpen voor snelheid. Ik besloot om de handel snelheid in het voordeel van de ingebouwde auto-voltooiing, kleur, Vim-toets controle, en syntaxis highlighting die ik ken en liefde in de visschelp.
Install fish:
apk add fish
Als u Bash en zijn completies en manpages in plaats daarvan wilt installeren, moet u ze installeren en een aantal extra dingen:
apk add bash bash-doc bash-completion
de minimalistische ideologie van Alpine betekent over het algemeen dat sommige programma ‘ s die een enkel pakket in andere distributies zouden zijn, worden opgesplitst in meerdere kleinere pakketten. Dit betekent ook dat u kunt aanpassen en afslanken van uw systeem precies hoe u wilt.
u kunt meer details vinden over het installeren van Bash in deze tutorial.
Wijzig de standaard shell
Na het installeren van fish kunt u er tijdelijk naar overschakelen en het uitproberen door fish
te typen en in de shell te laten vallen. Maar Ik wil fish mijn standaard shell maken, en hetchsh
commando dat ik gewend ben van andere distributies werkt niet.
zoek eerst uit waar fish is geïnstalleerd:
which fish
mijn uitvoer:
/usr/bin/fish
bewerk vervolgens de login shell om fish te gebruiken. Je kunt elke editor gebruiken waar je je prettig bij voelt. Als je een beginner bent, installeer dan Nano (met apk add nano
) zodat je configuratiebestanden kunt bewerken en opslaan met CTRL+X, bevestigen en afsluiten.
maar ik gebruikte Vim:
vim /etc/passwd
mijn eerste regel was:
root:x:0:0:root:/root:/bin/ash
om fish de standaard te maken, Verander die regel naar:
root:x:0:0:root:/root:/usr/bin/fish
Sla op en sluit af.
Ik weet zeker dat er een goede manier is om de shell opnieuw te sourcen, zodat je het meteen kunt gebruiken. Maar ik weet het niet zeker, dus ik raad aan om terug te keren naar de app browser, forceer-stoppen van de shell, en voor een goede maatregel, afsluiten en opnieuw opstarten van uw iPad of iPhone. Heropenen iSH, en nu, in aanvulling op de ” Welkom in Alpine!”bericht en informatie over aan de slag met apk, ziet u de standaard Fish login welkomstbericht: Welkom bij fish, de vriendelijke interactieve shell. Hoera!
ish.png
(Lee Tusman, CC BY-SA 4.0)
Python instellen en pip
Ik besloot Python toe te voegen (versie 3.x), niet alleen zodat ik code kon schrijven, maar omdat ik vertrouw op verschillende Python programma ‘ s. Installeer het:
apk add python3
hoewel Python 2.x is verouderd, u kunt het nog steeds installeren:
apk add python
Installeer de Python pakketbeheerder, pip en setuptools:
python3 -m ensurepip --default-pip
Het duurt enige tijd om de pakketbeheerder te installeren en in te stellen, dus wacht even.
dan kunt u curl downloaden, het netwerk overdracht gereedschap:
apk add curl
lees de handleiding
Fish gebruikt ingebouwde automatische aanvulling op basis van manpages. Net als andere commandoregelgebruikers vertrouw ik op de man
handleiding, en Alpine wordt niet geïnstalleerd. Dus, ik installeerde het samen met de less pager:
apk add man man-pages less less-doc
naast man, gebruik ik het fabulous tldr pages project, dat vereenvoudigde, community-driven manpages biedt.
Ik installeerde het met pip:
pip install tldr
het tldr
Commando verbindt met het web om pagina ‘ s op te halen wanneer het een verzoek voor een nieuwe tegenkomt. Als je wilt leren hoe je een commando moet gebruiken, kun je gewoon iets typen als tldr curl
om een duidelijke Engelse uitleg en goede voorbeelden te krijgen van hoe je het commando moet gebruiken.
u kunt natuurlijk al dit installatiewerk automatiseren met dotfiles of een installatiescript, maar dat zou niet echt binnen de Alpine manier vallen om een minimale installatie precies aan te passen aan uw specificaties. Trouwens, het duurde niet zo lang, of wel?
meer informatie
de iSH wiki bevat een “wat werkt” pagina met rapporten over welke pakketten momenteel werken. Let wel, npm lijkt op dit moment niet te werken.
een andere wiki pagina legt uit hoe je toegang kunt krijgen tot iSH bestanden vanuit de iOS Bestanden app. Dit is een manier om bestanden te verplaatsen en over te dragen.