Kører Linux kommandolinje på iOS

Kører Linux kommandolinje på iOS

Vidste du, at det er muligt at køre Linux kommandolinje på en iOS-enhed? Du spørger måske: "Hvorfor skulle jeg bruge tekstapplikationer på iPhone?" Et berettiget spørgsmål. Men hvis du læser Opensource.com, ved du sandsynligvis svaret: Linux-brugere ønsker at kunne arbejde med det på enhver enhed og bruge deres egne indstillinger.

Men mest af alt tørster de efter løsninger på komplekse opgaver.

Jeg har en syv år gammel iPad 2 Mini, som stadig fungerer godt til at læse e-bøger og andre opgaver. Men jeg vil også bruge den til at få adgang til kommandolinjeapplikationer med min samling af programmer og scripts, som jeg ikke kan undvære. Jeg har brug for et miljø, jeg er vant til, samt mit standard udviklingsmiljø. Og det er sådan, jeg har formået at opnå det.

Tilslutning til tastaturet

At arbejde med kommandolinjen for programmering gennem skærmtastaturet på en telefon eller tablet er ret ubehageligt. Jeg anbefaler at tilslutte et eksternt tastatur, enten via Bluetooth eller ved hjælp af en kamerastikadapter til at forbinde et kablet tastatur (jeg valgte det sidstnævnte). Når du tilslutter det opdelte Kinesis Advantage-tastatur til iPhone 6, bliver det til en mærkelig enhed, der ligner et corporate cyberdeck fra klassiske rollespil Shadowrun.

Installerer shell på iOS

For at køre et fuldt funktionelt Linux-system på iOS er der to muligheder:

  • Secure shell (SSH), der opretter forbindelse til en Linux-computer
  • Kørsel af et virtuelt system ved hjælp af Alpine Linux med iSH, som er open source, men skal installeres via Apples proprietære TestFlight-app

Som alternativ er der to terminalemulator-apps i open source, der giver mulighed for at arbejde med open-source værktøjer i et begrænset miljø. Dette er den mest nedskrevne version - faktisk kører du ikke Linux, men Linux-værktøjer. Når du arbejder med disse applikationer, er der strenge begrænsninger på funktionerne, men du får delvis kommandolinjefunktionalitet.

Før vi går videre til mere komplekse løsninger, vil jeg overveje den enkleste metode.

Mulighed 1: shell i "sandkasse"

En af de nemmeste måder er at installere en iOS-applikation LibTerm. Dette er open source En kommandolinje i en "sandbox" med understøttelse af over 80 kommandoer til nul dollars. Den leveres med Python 2.7, Python 3.7, Lua, C, Clang og meget mere.

Den omtrentlige funktionalitet ligner a-Shell, som udviklerne beskriver som "en testbrugergrænseflade til platforme med skærminddata". Kildekoden til a-Shell er offentliggjort som open source, og den er i aktiv udvikling, giver adgang til filsystemet og leveres med Lua, Python, Tex, Vim, JavaScript, C og C++, samt Clang og Clang++. Den tillader endda installation af Python-pakker via pip.

Mulighed 2: SSH

Et skridt fremad sammenlignet med at downloade en app er opsætningen af en SSH-klient. Vi har længe kunnet bruge en hvilken som helst af de mange SSH-klientapps til iOS for at oprette forbindelse til en server, der kører Linux eller BSD. Fordelen ved at bruge SSH er, at enhver distribution med enhver software kan køre på serveren. Du arbejder eksternt, og resultaterne sendes blot til terminalemulatoren på iOS-enheden.

Blink shell er en populær betalt SSH-app i open source. Hvis man ser bort fra den lille skærm på enheden, minder brugen af denne software om at oprette forbindelse til serveren via enhver anden kommandolinje. Blink-terminalen ser fantastisk ud, har mange færdige temaer og muligheden for at oprette egne, herunder muligheden for at tilpasse og tilføje nye skrifttyper.

Mulighed 3: Kørsel af Linux

At bruge SSH til at forbinde til en Linux-server er en fremragende måde at få adgang til kommandolinjen, men det kræver en ekstern server og netværksforbindelse. Det er ikke den største forhindring, men det kan ikke ignoreres helt, så du kan have brug for at arbejde med Linux uden en server.

Hvis det er dit tilfælde, skal du tage endnu et skridt fremad. TestFlight — er en proprietær service til installation af applikationer, der udvikles, før de er blevet udgivet i Apple App Store. TestFlight-applikationen kan installeres fra App Store og derefter bruges til at teste applikationer. Applikationer i TestFlight tillader et begrænset antal beta-testere (normalt op til 10.000) at arbejde med dem i en begrænset periode. For at downloade en testapplikation skal du klikke på et link fra din enhed, som normalt findes på udviklerens websted for testapplikationen.

Start af Alpine Linux med iSH

iSH — er en open-source TestFlight-applikation, der kører en virtuel maskine med en færdig distribution Alpine Linux (med lidt anstrengelse kan man også køre andre distributioner).

En vigtig funktion: applikationen er eksperimentel. Da iSH i øjeblikket er en testapplikation, skal du ikke forvente konstant og pålidelig drift. TestFlight-applikationer er tidsbegrænsede. Min nuværende version vil kun fungere i 60 dage. Det betyder, at jeg bliver udelukket efter 60 dage, og jeg skal tilmelde mig den næste testfase af iSH igen. Desuden mister jeg alle mine filer, hvis jeg ikke eksporterer dem ved hjælp af Filer på iOS eller kopierer dem til en Git-host eller via SSH. Med andre ord: Forvent ikke, at alt dette vil fortsætte med at fungere! Gem ikke noget vigtigt i systemet! Tag backup på et separat sted!

Installation af iSH

Begynd med at installere TestFlight fra App Store. Installer derefter iSH, ved at få installationslinket fra applikationens websted. Der er også en anden installationsmetode ved hjælp af AltStore, men jeg har ikke prøvet den. Eller hvis du har en betalt udviklerkonto, kan du downloade iSH-repositoriet fra GitHub og installere det selv.

Ved hjælp af linket installerer TestFlight iSH-applikationen på din enhed. Som med enhver anden applikation vil et ikon komme frem på skærmen.

Pakkestyring

iSH kører en x86-emulator med Alpine Linux. Alpine er en lille distribution på mindre end 5 MB. Jeg arbejdede med Alpine for første gang, så jeg troede, at sådan minimalisme ville være irriterende, men jeg kunne faktisk meget godt lide det.

Kører Linux kommandolinje på iOS
I Alpine bruges en pakkestyrer apk, som er enklere end selv apt eller pacman.

Sådan installeres en pakke:

apk add package

Sådan fjernes en pakke:

apk del package

Sådan finder du andre kommandoer og information:

apk --help

Opdatering af pakke manager:

apk update
apk upgrade

Installation af teksteditor

Den standard teksteditor i Alpine er Vi, men jeg foretrækker Vim, så jeg installerede det:

apk add vim

Hvis du ønsker det, kan du installere Nano eller Emacs.

Skift af shell

Jeg ved ikke, hvordan det er med dig, men jeg havde brug for en fish shell. Andre mennesker foretrækker Bash eller Zsh. Men i Alpine bruges ash! Ash er en fork af shellen Dash, som selv er en fork af den oprindelige ash, eller Almquist shell. Dens prioritet er hastighed. Jeg valgte at bytte hastighed for indbygget autocompletion, farver, Vim-tastaturstyring og syntaksfremhævning, som jeg elsker og kender fra fish shell.

Installation af fish:

apk add fish

Hvis du har brug for Bash med dens autocompletion og man-sider, så installer dem:

apk add bash bash-doc bash-completion

Den minimalistiske ideologi i Alpine betyder typisk, at nogle programmer, der i andre distributioner er ét pakkenhed, vil være opdelt i flere mindre pakker. Det betyder også, at du kan tilpasse og reducere systemets størrelse præcist som du ønsker.

Du kan læse mere om installation af Bash i denne tutorial.

Skift af standard shell

Efter installationen af fish kan du midlertidigt skifte til det ved at skrive fish og gå ind i shellen. Men jeg vil gøre fish til standard shell, og kommandoen chsh, som jeg har brugt i andre distributioner, virkede ikke.

Først finder vi ud af, hvor fish er installeret:

which fish

Her er hvad jeg fik:

/usr/bin/fish

Dernæst skifter vi login shell til fish. Du kan bruge enhver editor, du ønsker. Hvis du er nybegynder, så installer Nano (med kommandoen apk add nano), så du kan redigere konfigurationsfilerne og gemme dem med CTRL+X, bekræfte og afslutte.

Men jeg brugte Vim:

vim /etc/passwd

Min første linje var sådan her:

root:x:0:0:root:/root:/bin/ash

For at gøre fish til standard shell ændrer vi denne linje til følgende:

root:x:0:0:root:/root:/usr/bin/fish

Så gemmer vi filen og afslutter.

Jeg er sikker på, at der er en god måde at ændre stien til shell'en, så den kan bruges med det samme. Men jeg kender den ikke, så jeg anbefaler at vende tilbage til app-browseren, tvinge til at logge ud af shell'en og for at være på den sikre side slukke og genstarte din iPad eller iPhone. Åbn iSH igen, og nu udover beskeden «Welcome to Alpine!» og information om opstart med apk vil du se den sædvanlige login-besked fra fish: Welcome to fish, the friendly interactive shell. Hurra!

Kører Linux kommandolinje på iOS

Opsætning af Python og pip

Jeg har besluttet at tilføje Python (version 3.x), ikke kun for at skrive kode, men også fordi jeg bruger flere programmer i Python. Lad os installere det:

apk add python3

Selvom Python 2.x er forældet, kan du også installere det:

apk add python

Lad os installere Python-pakkeforvalteren kaldet pip og setuptools:

python3 -m ensurepip --default-pip

Installationen og opsætningen af pakkeforvalteren vil tage noget tid, så bare vent.

Derefter kan du downloade et værktøj til filoverførsel over netværk curl:

apk add curl

Læs manualerne

Fish bruger indbygget autoudfyldning baseret på man-sider. Som andre kommandolinje-brugere bruger jeg manualen man, men i Alpine er den ikke installeret. Derfor installerede jeg det med terminalens pager less:

apk add man man-pages less less-doc

Ud over man bruger jeg det fremragende tldr pages-projekt, som leverer forenklede og community-forvaltede man-sider.

Jeg installerede det med pip:

pip install tldr

Kommandoen tldr forbinder til internettet for at hente sider, når den møder en anmodning om en ny side. Hvis du vil vide, hvordan du bruger en kommando, kan du skrive noget som tldr curl og få en beskrivelse på enkel engelsk samt gode eksempler på brugen af kommandoen.

Selvfølgelig kan alt dette installationsarbejde automatiseres med dotfiles eller et installationsscript, men i virkeligheden er det ikke rigtig i tråd med Alpine-ideologien — at konfigurere en minimal installation klart til ens egne behov. Desuden tog det jo så lang tid, ikke?

Yderligere oplysninger

På iSH Wiki er der en side "what works" med rapporter om, hvilke pakker der i øjeblikket fungerer. For resten ser det ud til, at npm i øjeblikket ikke fungerer..

På endnu en wiki-side forklares det, hvordan man får adgang til iSH-filerne fra iOS Files-appen. Det er en måde, man kan flytte og kopiere filer på.

Du kan også installere Git (ja! apk add git ) og pushe dit arbejde til et eksternt repository eller overføre det til serveren via SSH. Og selvfølgelig kan du downloade og køre et hvilket som helst antal fantastiske open-source-projekter fra GitHub.

Du kan finde mere om iSH på disse links:

Annoncering

VDS-infrastruktur tilbyder virtuelle servere på Linux eller Windows. Vi bruger udelukkende mærkeudstyr, det bedste kontrolpanel til servere i sin klasse, som vi selv har udviklet, samt nogle af de bedste datacentre i Rusland og EU. Skynd dig at bestille!

Kører Linux kommandolinje på iOS

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster