visste du att du kan köra en Linux-kommandorad på din iOS-enhet? Du kanske frågar, ” varför skulle jag vilja använda textbaserade applikationer på min lilla iPhone?”OK, rättvist nog. Det är en ganska rimlig fråga. Men om du läser Opensource.com, du vet förmodligen svaret: Linux-användare vill kunna använda vilken enhet som helst, och de vill också använda sina egna anpassningar.
och mest av allt vill de ha en utmaning.
Jag har en sjuårig iPad 2 Mini som fortfarande fungerar bra för att läsa e-böcker och andra uppgifter. Men jag vill också använda den för att komma åt kommandoraden för applikationer och min serie program och skript som jag inte kan göra utan. Jag vill ha den miljö jag är van vid, liksom min standardutvecklingsmiljö. Så här gjorde jag det.
Anslut till ett tangentbord
använda kommandoraden för programmering på en telefon eller surfplatta skärmtangentbord är inte mycket roligt. Jag rekommenderar att du ansluter ett externt tangentbord, antingen via Bluetooth eller genom att använda en camera connection kit adapter för att ansluta ett trådbundet tangentbord (min preferens). Att ansluta mitt Kinesis Advantage split-tangentbord till min iPhone 6 ger lite konstig optik, som en Corps cyberdeck från det klassiska rollspelet Shadowrun.
få ett skal på iOS
Du har två alternativ för att köra ett komplett Linux-system på iOS:
- Secure shell (SSH) i en Linux-dator
- kör ett virtualiserat system med Alpine Linux med iSH, som är öppen källkod, men måste installeras med Apples proprietära TestFlight-app
alternativt finns det två open source-terminalemulatorappar som tillhandahåller open source-verktyg i en begränsad miljö. Detta är det mest begränsade alternativet—det låter dig inte köra Linux, men du kör Linux-verktyg. Det finns stora begränsningar för vad du kan göra på enheten med dessa appar, men de får dig lite kommandoradsfunktionalitet.
Jag ska titta på det enklaste tillvägagångssättet innan jag utforskar mer utmanande lösningar.
alternativ 1: ett sandboxat skal
ett av de enklaste sätten att komma igång är med iOS-appen LibTerm. Detta är ett sandboxat kommandoradsskal med öppen källkod med 80 + kommandon buntade i en $ 0-app. Den levereras med Python 2.7, Python 3.7, Lua, C, Clang och mer.
längs liknande linjer är a-Shell, beskrivet som ett ” textbaserat användargränssnitt för en skärmbaserad plattform.”a-Shell är öppen källkod, i aktiv utveckling, ger tillgång till filsystemet och levereras med Lua, Python, Tex, vim, JavaScript, C och C++, tillsammans med Clang och Clang++. Det låter dig till och med Installera Python-paket med pip.
alternativ 2: SSH anywhere
ett steg upp från att ladda ner en app konfigurerar en SSH-klient. Under lång tid har det varit möjligt att använda en av många SSH-klientappar på iOS för att ansluta till en server som kör en Linux distro eller BSD. Fördelen med att använda SSH är att din server kan köra vilken distro som helst med vilken programvara du vill. Du arbetar på distans, och din produktion blir bara pipad till din iOS-enhetens terminalemulator.
Blink shell är en populär betald öppen källkod SSH app. Utanför den lilla skärmen är det att använda denna programvara som att ansluta till en server via någon annan kommandotolk. Blinks terminal ser vacker ut, med ett antal inkluderade teman och möjligheten att skapa egna teman, inklusive att anpassa och lägga till nya teckensnitt.
alternativ 3: Kör Linux
använda SSH för att ansluta till en server som kör Linux är ett bra sätt att komma åt en snabb, men det kräver tillgång till en extern server och en anslutning. Detta är inte det värsta hindret för inträde, men det är inte helt försumbar, och du kanske vill använda Linux utan detta serverkrav.
om så är fallet måste du bryta ut något lite mer på framkanten. TestFlight är en egen tjänst för att distribuera utvecklingsappar innan de skickas till Apples App Store. Du kan ladda ner TestFlight-appen från butiken och sedan registrera dig för ett antal testapplikationer. Appar i TestFlight tillåter ett begränsat antal externa betatestare (vanligtvis upp till 10 000) under en begränsad tid. För att ladda ner en testapp måste du komma åt en länk direkt från din enhet, som vanligtvis finns på testapputvecklarens webbplats.
kör Alpine Linux med iSH
iSH är en öppen källkod TestFlight app som kör en virtuell maskin med Alpine Linux distro ur lådan (men du kan köra andra distributioner med lite mer mixtrande).
en viktig varning: Detta är experimentellt. Eftersom iSH för närvarande är en testapp, förvänta dig inte permanent eller robust service. TestFlight-appar är tidsbegränsade. Min nuvarande byggnad varar 60 dagar. Det betyder att om 60 dagar kommer jag att vara låst och måste återansluta iSH: s nästa testfas. Dessutom förlorar jag mina filer om jag inte exporterar dem med filer på iOS eller säkerhetskopierar dem till en Git-värd eller med SSH. För att vara tydlig: lita inte på detta för att fortsätta arbeta! Lägg inte på något här som är viktigt! Säkerhetskopiera ditt arbete någon annanstans!
installera iSH
Kom igång genom att installera TestFlight via App Store. Installera sedan iSH genom att få installationslänken via sin webbplats. Det finns en annan installationsmetod som använder AltStore, men jag har inte provat det. Eller om du har ett betalt utvecklarkonto kan du ladda ner iSH: s repo från GitHub och distribuera det själv.
med länken installerar TestFlight en iSH-app på din enhet. Som alla andra appar visas den på din skärm med en ikon.
hantera paket
iSH kör en x86-emulator med Alpine Linux. Alpine är en liten, under-5MB distro. Det var första gången jag körde Alpine, och jag trodde att jag skulle bli frustrerad med en sådan minimal distro, men jag tyckte verkligen om det.
ish-installera.png
(Lee Tusman, CC BY-SA 4.0)
Alpine använder apk-pakethanteraren, vilket är enklare än till och med apt eller pacman.
för att installera ett paket:
apk add package
för att ta bort ett paket:
apk del package
hitta andra kommandon och information med:
apk --help
uppdatera pakethanteraren:
apk updateapk upgrade
hämta en textredigerare
Alpins standardtextredigerare är Vi, men jag föredrar vim, så jag installerade den:
apk add vim
Du kan kan installera nano eller emacs, om du föredrar.
ändra skalet
Jag vet inte om dig, men jag behöver fiskskalet. Andra människor föredrar Bash eller Zsh. Men Alpine använder aska! Ask är en gaffel av Dash skal, själv en gaffel av den ursprungliga aska eller Almquist skal. Den är konstruerad för hastighet. Jag bestämde mig för att handla hastighet till förmån för den inbyggda automatisk komplettering, färg, vim-nyckelkontroll och syntaxmarkering som jag känner och älskar i fish shell.
Installera fish:
apk add fish
om du vill ha Bash och dess kompletteringar och mansidor istället måste du installera dem och några extra saker:
apk add bash bash-doc bash-completion
Alpines minimalistiska ideologi innebär i allmänhet att vissa program som skulle vara ett enda paket i andra distros delas upp i flera mindre paket. Detta innebär också att du kan anpassa och smala ner ditt system exakt hur du vill.
Du kan hitta mer information om hur du installerar Bash i denna handledning.
ändra standardskalet
När du har installerat fish kan du tillfälligt byta till det och prova det genom att skriva fish
och släppa in i skalet. Men jag vill göra fish mitt standardskal, och kommandot chsh
som jag är van vid från andra distros fungerar inte.
först, ta reda på var fish är installerat:
which fish
min utgång:
/usr/bin/fish
redigera sedan inloggningsskalet för att använda fish. Du kan använda vilken redaktör du är bekväm med. Om du är nybörjare installerar du Nano (med apk add nano
) så att du kan redigera konfigurationsfiler och spara dem med CTRL+X, bekräfta och avsluta.
men jag använde vim:
vim /etc/passwd
min första rad var:
root:x:0:0:root:/root:/bin/ash
för att göra fish standard, ändra den raden till:
root:x:0:0:root:/root:/usr/bin/fish
spara sedan och avsluta.
Jag är säker på att det finns ett bra sätt att återkälla skalet så att du kan börja använda det direkt. Men jag är inte säker, så jag rekommenderar att du återvänder till App-webbläsaren, tvingar att avsluta skalet och för bra åtgärd, stänga av och starta om din iPad eller iPhone. Öppna iSH igen, och nu, förutom ”Välkommen till Alpine!”meddelande och information om att komma igång med apk, Du kommer att se standard fish login välkomstmeddelande: Välkommen till fish, den vänliga interaktiva skalet. Hurra!
ish.png
(Lee Tusman, CC BY-SA 4.0)
Ställ in Python och pip
jag bestämde mig för att lägga till Python (version 3.x), inte bara så att jag kunde skriva kod utan för att jag litar på flera Python-program. Installera det:
apk add python3
Även om Python 2.x är föråldrat, du kan fortfarande installera det:
apk add python
Installera Python package manager, pip och setuptools:
python3 -m ensurepip --default-pip
det tar lite tid att installera och ställa in pakethanteraren, så vänta bara.
sedan kan du ladda ner curl, nätverksöverföringsverktyget:
apk add curl
Läs manualen
Fish använder inbyggd automatisk komplettering baserat på manualsidor. Liksom andra kommandoradsanvändare litar jag på man
manual, och Alpine kommer inte med den installerad. Så jag installerade den tillsammans med den mindre personsökaren:
apk add man man-pages less less-doc
förutom man använder jag fabulous TLDR pages-projektet, vilket ger förenklade, gemenskapsdrivna mansidor.
Jag installerade den med pip:
pip install tldr
kommandottldr
ansluter till webben för att hämta sidor när den stöter på en begäran om en ny. Om du behöver lära dig hur du använder ett kommando kan du bara skriva något som tldr curl
för att få en enkel-engelsk förklaring och bra exempel på hur du använder kommandot.
Du kan naturligtvis automatisera allt detta installationsarbete med dotfiles eller ett installationsskript, men det skulle inte riktigt falla inom det alpina sättet att anpassa en minimal installation exakt till dina specifikationer. Dessutom tog det inte så lång tid, eller hur?
Läs mer
iSH wiki innehåller en” vad fungerar ” – sida med rapporter om vilka paket som för närvarande fungerar. Observera att npm inte verkar fungera just nu.
en annan wikisida förklarar hur du kan komma åt iSH-filer från appen iOS-filer. Detta är ett sätt du kan flytta och överföra filer.