Vi starter kommandolinjen Linux på iOS

Vi starter kommandolinjen Linux på iOS

Visste du at du kan kjøre kommandolinjen for Linux på en iOS-enhet? Kanskje du lurer på: «Hvorfor skulle jeg bruke tekstapplikasjoner på iPhone?» Et rimelig spørsmål. Men hvis du leser Opensource.com, vet du sannsynligvis svaret: Linux-brukere ønsker å kunne bruke det på hvilken som helst enhet og vil ha tilgang til sine egne innstillinger.

Men mest av alt lengter de etter å løse komplekse oppgaver.

Jeg har en syv år gammel iPad 2 Mini, som fortsatt fungerer bra for å lese e-bøker og andre oppgaver. Men jeg vil også bruke den til å få tilgang til kommandolinjen for applikasjoner med mitt sett av programmer og skript som jeg ikke kan jobbe uten. Jeg trenger et miljø jeg er kjent med, samt min standard utviklingsmiljø. Og slik klarte jeg å oppnå dette.

Tilkobling til tastatur

Å jobbe med kommandolinjen for programmering via skjermtastaturet på telefonen eller nettbrettet er ganske upraktisk. Jeg anbefaler å koble til et eksternt tastatur, enten via Bluetooth, eller ved å bruke en kamerakoblingsadapter for å koble til et kablet tastatur (jeg valgte det siste). Når jeg kobler den delte tastaturen Kinesis Advantage til iPhone 6, får jeg en merkelig enhet som minner om et corporate cyberdeck fra den klassiske rollespillet Shadowrun.

Installere et skall på iOS

For å kjøre et fullt funksjonelt Linux-system på iOS er det to alternativer:

  • Sikker shell (SSH), kobler til en Linux-datamaskin
  • Kjøre et virtuelt system med Alpine Linux via iSH, som er åpen kildekode, men må installeres med et proprietært TestFlight-program fra Apple

Alternativt finnes det to terminalemulator-applikasjoner i åpen kildekode som gir mulighet for arbeid med open-source-verktøy i et begrenset miljø. Dette er den mest avskårne varianten – du kjører faktisk ikke Linux, men Linux-verktøy. Når du jobber med disse applikasjonene finnes det strenge begrensninger i mulighetene, men du får delvis funksjonalitet av kommandolinjen.

Før jeg går videre til mer kompliserte løsninger, vil jeg ta for meg den enkleste metoden.

Alternativ 1: skall i «sandbox»

En av de enkleste måtene er å installere en applikasjon for iOS LibTerm. This åpen kildekode Kommando-skall i «sandkasse» med støtte for mer enn 80 kommandoer til prisen null dollar. Den leveres med Python 2.7, Python 3.7, Lua, C, Clang og mye mer.

Den har omtrent samme funksjonalitet som a-Shell, beskrevet av utviklerne som «brukergrensesnitt for plattformer med skjerminngang». Kildekoden til a-Shell er utgitt som åpen kildekode, den er under aktiv utvikling, gir tilgang til filsystemet og leveres med Lua, Python, Tex, Vim, JavaScript, C og C++, samt Clang og Clang++. Den tillater til og med installasjon av Python-pakker ved hjelp av pip.

Alternativ 2: SSH

Et annet skritt fremover sammenlignet med å laste ned applikasjonen er å sette opp en SSH-klient. I lang tid har vi kunnet bruke en av mange SSH-klientapplikasjoner for iOS for å koble oss til serveren som kjører Linux eller BSD. Fordelen med å bruke SSH er at hvilken som helst distribusjon med programvare kan kjøre på serveren. Du jobber eksternt, og resultatene sendes rett til terminalemulatoren på iOS-enheten.

Blink shell — er en populær betalt SSH-applikasjon på åpen kildekode. Hvis man ser bort fra den lille skjermen på enheten, ligner bruken av denne programvaren på å koble til serveren via en hvilken som helst annen kommandolinje. Blink-terminalen ser fantastisk ut, med mange ferdige temaer og mulighet for å lage egne, inkludert muligheten til å tilpasse og legge til nye skrifttyper.

Alternativ 3: kjøre Linux

Bruk av SSH for å koble til en server med Linux er en utmerket måte å få tilgang til kommandolinjen på, men det krever en ekstern server og tilkobling til nettverket. Dette er ikke den største hindringen, men den kan ikke overses helt, derfor kan det hende du må jobbe med Linux uten server.

Hvis dette er tilfelle for deg, må du ta enda et skritt fremover. TestFlight — er en proprietær tjeneste for å installere utviklede applikasjoner før de er gjort tilgjengelige i Apple App Store. TestFlight-applikasjonen kan installeres fra App Store, og deretter bruke testapplikasjoner. Applikasjoner i TestFlight lar et begrenset antall beta-testere (vanligvis opptil 10 000) bruke dem i en begrenset tidsperiode. For å laste ned en testapplikasjon må du gå til lenken som vanligvis finnes på utviklerens nettsted fra enheten din.

Kjøring av Alpine Linux med iSH

iSH — er en open-source applikasjon TestFlight som kjører en virtuell maskin med en ferdig distribusjon Alpine Linux (med litt innsats kan man kjøre andre distribusjoner også).

Viktig funksjon: applikasjonen er eksperimentell. Siden iSH for tiden er en testapplikasjon, ikke forvent stabil og pålitelig drift. TestFlight-applikasjoner er tidsbegrensede. Min nåværende bygging vil bare fungere i 60 dager. Dette betyr at etter 60 dager vil jeg bli ekskludert og må bli med i neste testfase av iSH. I tillegg vil jeg miste alle mine filer med mindre jeg eksporterer dem via Files på iOS eller kopierer dem til en Git-host eller via SSH. Med andre ord: Ikke forvent at alt dette vil fortsette å fungere! Ikke legg noe viktig i systemet! Ta sikkerhetskopi et annet sted!

Installasjon av iSH

Begynn med å installere TestFlight fra App Store. Installer deretter iSH, ved å få installasjonslenken fra applikasjonens nettsted. Det er en annen installasjonsmetode ved bruk av AltStore, men jeg har ikke prøvd det. Eller hvis du har en betalt utviklerkonto, kan du laste ned iSH-repositoriet fra GitHub og installere det selv.

Ved hjelp av lenken installerer TestFlight iSH-applikasjonen på enheten din. Som med enhver annen applikasjon, vil et ikon vises på skjermen.

Pakkebehandling

iSH kjører en x86-emulator med Alpine Linux. Alpine er en liten distribusjon som er mindre enn 5 MB. Jeg arbeidet først med Alpine, så jeg trodde at et slikt minimalisme ville være irriterende, men jeg likte det faktisk veldig godt.

Vi starter kommandolinjen Linux på iOS
Alpine bruker pakkebehandleren apk, som er enklere enn selv apt eller pacman.

Hvordan installere en pakke:

apk add package

Hvordan slette en pakke:

apk del package

Hvordan finne andre kommandoer og informasjon:

apk --help

Oppdatering av pakkebehandleren:

apk update
apk upgrade

Installasjon av teksteditor

Standard teksteditoren i Alpine er Vi, men jeg foretrekker Vim, så jeg installerte det:

apk add vim

Hvis ønskelig kan du installere Nano eller Emacs.

Bytte skall

Jeg vet ikke hvordan det er med deg, men jeg måtte ha fish shell. Andre foretrekker Bash eller Zsh. Men i Alpine brukes ash! Ash er en fork av Dash, som igjen er en fork av den originale ash, eller Almquist shell. Dets prioritet er hastighet. Jeg valgte å bytte hastighet mot innebygd autocompletion, farger, Vim-tastaturkontroller og syntaksutheving, som jeg elsker og kjenner fra fish shell.

Installasjon av fish:

apk add fish

Hvis du trenger Bash med autocompletion og man-sider, installer dem:

apk add bash bash-doc bash-completion

Den minimalistiske ideologien til Alpine betyr vanligvis at noen programmer som i andre distribusjoner er én pakke, blir delt opp i flere mindre pakker. Dette betyr også at du kan tilpasse og redusere systemstørrelsen akkurat som du ønsker.

Mer om installasjon av Bash kan du lese i denne tutorialen.

Bytte standard skall

Etter installasjon av fish kan du midlertidig bytte til den ved å skrive fish og bytte til skallet. Men jeg vil gjøre fish til standard skall, og kommandoen chsh, som jeg har brukt i andre distribusjoner, fungerte ikke.

først finner vi ut hvor fish er installert:

which fish

Her er hva jeg fikk:

/usr/bin/fish

Deretter endrer vi login shell til fish. Du kan bruke hvilken som helst redaktør du ønsker. Hvis du er nybegynner, installer Nano (med kommandoen apk add nano), slik at du kan redigere konfigurasjonsfiler og lagre dem med CTRL+X, bekrefte og avslutte.

Men jeg brukte Vim:

vim /etc/passwd

Min første linje var slik:

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

For å gjøre fish til standard skall, endrer vi denne linjen til:

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

Så lagrer vi filen og avslutter.

Jeg er sikker på at det finnes en god måte å endre stien til skallet på, så den kan brukes umiddelbart. Men jeg vet det ikke, så jeg anbefaler å gå tilbake til applikasjonsnettleseren, tvinge utlogging fra skallet og for sikkerhets skyld slå av og starte iPad eller iPhone på nytt. Åpne iSH igjen, og nå, i tillegg til meldingen «Welcome to Alpine!» og informasjon om oppstart med apk, vil du se den standard velkomstmeldingen til login fish: Velkommen til fish, den vennlige interaktive kommandolinjen. Hurra!

Vi starter kommandolinjen Linux på iOS

Innstilling av Python og pip

Jeg har bestemt meg for å legge til Python (versjon 3.x), ikke bare for å skrive kode, men også fordi jeg bruker flere programmer på Python. La oss installere det:

apk add python3

Selv om Python 2.x er foreldet, kan vi også installere det:

apk add python

La oss installere Python-pakkeadministratoren kalt pip og setuptools:

python3 -m ensurepip --default-pip

For å installere og konfigurere pakkeadministratoren vil det ta litt tid, så bare vent.

Deretter kan vi laste ned verktøyet for filoverføring over nettverket wget:

apk add curl

Leser manualene

Fish bruker innebygd autocompletion basert på man-sider. Som andre terminalbrukere, bruker jeg manualen man, men i Alpine er det ikke installert. Så jeg installerte det med terminalpageren less:

apk add man man-pages less less-doc

I tillegg til man bruker jeg det flotte TLDR-prosjektet, som gir forenklede og samfunnsstyrte man-sider.

Jeg installerte det med pip:

pip install tldr

Laget tldr kobler til nettet for å hente sider når den møter en forespørsel om en ny side. Hvis du trenger å vite hvordan du bruker en kommando, kan du skrive noe som tldr curl og få en beskrivelse på enkel engelsk og gode eksempler på hvordan å bruke kommandoen.

Selvfølgelig kan alt dette installasjonsarbeidet automatiseres med dotfiles eller et installasjonsskript, men det passer egentlig ikke helt med ideologien til Alpine — å tilpasse en minimal installasjon klart til sine behov. Dessuten tok det jo så mye tid, ikke sant?

Ytterligere informasjon

På WIkien til iSH er det en side "what works" med rapporter om hvilke pakker som fungerer nå. Forresten, det ser ut til at npm fungerer ikke nå.

På en annen wiki-side forklares det hvordan få tilgang til iSH-filer fra iOS Files-appen. Dette er en av metodene for å flytte og kopiere filer.

Du kan også installere Git (ja! apk add git ) og pushe arbeidet ditt til et eksternt depot eller overføre det til en server via SSH. Og selvsagt kan du laste ned og kjøre et hvilket som helst antall flotte open-source-prosjekter fra GitHub.

Du kan lære mer om iSH fra disse lenkene:

Advertising

VDS-servere tilbyr virtuelle servere på Linux eller Windows. Vi bruker utelukkende merkevareutstyr, den beste i sitt slag serveradministrasjonspanel av eget design og noen av de beste datasentrene i Russland og EU. Skynd deg å bestille!

Vi starter kommandolinjen Linux på iOS

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster