Lansăm linia de comandă Linux pe iOS

Lansăm linia de comandă Linux pe iOS

Știați că este posibil să rulați linia de comandă Linux pe un dispozitiv iOS? Poate vă întrebați: „De ce ar trebui să folosesc aplicații text pe iPhone?” O întrebare firească. Dar dacă citiți Opensource.com, probabil știți răspunsul: utilizatorii Linux doresc să poată lucra cu acesta pe orice dispozitiv și să utilizeze propriile setări.

Dar cel mai mult ei își doresc soluții pentru sarcini complexe.

Am un iPad 2 Mini de șapte ani, care încă se descurcă bine pentru citirea cărților electronice și alte sarcini. Totuși, vreau să-l folosesc și pentru accesarea liniei de comandă a aplicațiilor cu setul meu de programe și scripturi fără de care nu pot lucra. Am nevoie de un mediu la care sunt obișnuit, precum și de standardul meu de dezvoltare. Iată cum am reușit să fac acest lucru.

Conectarea la tastatură

Lucrul cu linia de comandă pentru programare prin intermediul tastaturii pe ecranul telefonului sau al tabletei este destul de incomod. Recomand conectarea unei tastaturi externe, fie prin Bluetooth, fie folosind un adaptor de conectare pentru cameră pentru a conecta o tastatură prin cablu (eu am ales cea de-a doua variantă). Când conectezi tastatura divizată Kinesis Advantage la iPhone 6, rezultatul este un dispozitiv ciudat care amintește de un cyberdeck corporativ din clasicul joc de rol Shadowrun.

Instalarea unei shell pe iOS

Pentru a rula un sistem Linux complet funcțional pe iOS există două opțiuni:

  • Secure shell (SSH), conectat la un computer cu Linux
  • Rularea unui sistem virtual cu Alpine Linux folosind iSH, care este open source, dar trebuie instalat printr-o aplicație proprietară TestFlight de la Apple

În alternativă, există două aplicații terminal emulator open source, care oferă posibilitatea de a lucra cu instrumente open-source într-un mediu restricționat. Aceasta este cea mai limitată variantă - de fapt, rulați nu Linux, ci instrumente Linux. Când folosiți aceste aplicații, există restricții severe în privința capacităților, totuși obțineți o funcționalitate parțială a liniei de comandă.

Înainte de a trece la soluții complexe, voi examina metoda cea mai simplă.

Opțiunea 1: shell într-o „sandbox”

Una dintre cele mai simple modalități este să instalați o aplicație pentru iOS LibTerm. Aceasta open source Un shell de comandă în „sandbox” cu suport pentru peste 80 de comenzi, la prețul de zero dolari. Acesta vine împreună cu Python 2.7, Python 3.7, Lua, C, Clang și multe altele.

Funcționalitate aproximativ similară oferă a-Shell, descris de dezvoltatori ca „interfața de utilizator de test pentru platforma cu introducere pe ecran”. Sursele a-Shell sunt disponibile open source, este în dezvoltare activă, oferă acces la sistemul de fișiere și vine cu Lua, Python, Tex, Vim, JavaScript, C și C++, precum și cu Clang și Clang++. De asemenea, permite instalarea pachetelor Python folosind pip.

Variantă 2: SSH

Un alt pas înainte față de descărcarea aplicației este configurarea unui client SSH. De mult timp avem posibilitatea de a folosi oricare dintre numeroasele aplicații client SSH pentru iOS pentru a ne conecta la un server care rulează Linux sau BSD. Avantajul utilizării SSH este că pe server poate rula orice distribuție cu orice software. Lucrezi de la distanță, iar rezultatele muncii tale sunt transmise pur și simplu emulatorului de terminal pe dispozitivul iOS.

Blink shell — este o aplicație SSH plătită populară în open source. Dacă nu ținem cont de ecranul mic al dispozitivului, utilizarea acestui software seamănă cu conectarea la un server prin orice alt terminal de comandă. Terminalul Blink arată grozav, are multe teme gata făcute și o funcție de creare a propriilor teme, inclusiv posibilitatea de a personaliza și adăuga noi fonturi.

Variantă 3: rularea Linux

Utilizarea SSH pentru a te conecta la un server Linux este o modalitate excelentă de acces la linia de comandă, dar necesită un server extern și o conexiune de rețea. Aceasta nu este cea mai mare barieră, dar nu poate fi complet ignorată, așa că este posibil să ai nevoie să lucrezi cu Linux fără un server.

Dacă acesta este cazul tău, va trebui să faci un alt pas înainte. TestFlight — este un serviciu proprietar pentru instalarea aplicațiilor în dezvoltare înainte de a fi lansate în Apple App Store. Aplicația TestFlight poate fi descărcată din App Store, iar apoi poate fi utilizată pentru aplicații de testare. Aplicațiile din TestFlight permit unui număr limitat de beta-testeri (de obicei până la 10.000) să lucreze cu ele pentru o perioadă limitată de timp. Pentru a descărca aplicația de testare, trebuie să accesați linkul de pe dispozitivul dumneavoastră, care se află de obicei pe site-ul web al dezvoltatorului aplicației de testare.

Lansarea Alpine Linux cu iSH

iSH — este o aplicație open-source TestFlight care rulează o mașină virtuală cu o distribuție gata pregătită Alpine Linux (cu puțin efort, se pot rula și alte distribuții).

O caracteristică importantă: aplicația este experimentală. Deoarece iSH este acum o aplicație de testare, nu așteptați o funcționare constantă și fiabilă. Aplicațiile TestFlight sunt limitate ca timp. Construcția mea actuală va funcționa doar 60 de zile. Acest lucru înseamnă că, după 60 de zile, voi fi exclus și va trebui să mă reînscriu pentru următoarea etapă a testării iSH. Mai mult, voi pierde toate fișierele mele dacă nu le exportez utilizând Files pe iOS sau nu le copiez pe un serviciu de gazduire Git sau prin SSH. Cu alte cuvinte: Nu conta că totul va continua să funcționeze! Nu stoca nimic important în sistem! Efectuați backup într-un loc separat!

Instalare iSH

Începeți prin a instala TestFlight din App Store. Apoi instalați iSH, obținând linkul de instalare de pe site-ul aplicației. Există o altă metodă de instalare folosind AltStore, dar nu am încercat-o. Sau, dacă aveți un cont de dezvoltator plătit, puteți descărca depozitul iSH de pe GitHub și să-l instalați manual.

Prin linkul TestFlight, aplicația iSH va fi instalată pe dispozitivul dumneavoastră. Asemenea oricărei alte aplicații, pe ecran va apărea un iconiță.

Gestionarea pachetelor

iSH rulează un emulator x86 cu Alpine Linux. Alpine este o distribuție mică de mai puțin de 5 MB. Am lucrat prima dată cu Alpine, așa că m-am gândit că acest minimalism va fi deranjant, dar de fapt mi-a plăcut foarte mult.

Lansăm linia de comandă Linux pe iOS
În Alpine se folosește un manager de pachete apk, care este mai simplu chiar decât apt sau pacman.

Cum se instalează un pachet:

apk add package

Cum se elimină un pachet:

apk del package

Cum să afli alte comenzi și informații:

apk --help

Actualizarea managerului de pachete:

apk update
apk upgrade

Instalarea editorului de text

Editorul de text standard pentru Alpine este Vi, dar eu prefer Vim, așa că l-am instalat:

apk add vim

Dacă doriți, puteți instala Nano sau Emacs.

Schimbarea shell-ului

Nu știu despre voi, dar eu am avut nevoie de fish shell. Alte persoane preferă Bash sau Zsh. Totuși, în Alpine se folosește ash! Ash este un fork al shell-ului Dash, care este el însuși un fork al originalului ash, sau Almquist shell. Prioritatea sa este viteza. Am decis să sacrific viteza pentru completarea automată încorporată, culorile, controlul tastelor Vim și evidențierea sintaxei, pe care le iubesc și le știu din fish shell.

Instalarea fish:

apk add fish

Dacă aveți nevoie de Bash cu completarea automată și paginile man, atunci le puteți instala:

apk add bash bash-doc bash-completion

Ideologia minimalistă a Alpine înseamnă, de obicei, că unele programe care în alte distribuții sunt un singur pachet, vor fi împărțite în mai multe pachete mai mici. De asemenea, acest lucru înseamnă că puteți personaliza și micșora dimensiunea sistemului exact așa cum doriți.

Mai multe informații despre instalarea Bash pot fi găsite în acest tutorial.

Schimbarea shell-ului implicit

După instalarea fish, puteți comuta temporar pe ea introducând fish și trecând în shell. Dar vreau să fac fish shell-ul implicit, iar comanda chsh, pe care am folosit-o în alte distribuții, nu a funcționat.

Mai întâi să aflăm unde s-a instalat fish:

which fish

Iată ce am obținut:

/usr/bin/fish

Apoi vom schimba login shell-ul în fish. Puteți folosi orice editor care vă este convenabil. Dacă sunteți începător, instalați Nano (cu comanda apk add nano), pentru a putea edita fișierele de configurare și a le salva prin CTRL+X, confirmați și ieșiți.

Dar eu am folosit Vim:

vim /etc/passwd

Prima mea linie a fost:

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

Pentru a face fish shell-ul implicit, vom schimba această linie în următoarea:

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

Apoi vom salva fișierul și vom ieși.

Sunt sigur că există o metodă bună de a schimba calea shell-ului pentru a-l putea folosi imediat. Dar eu nu o cunosc, așa că recomand să reveniți în browserul aplicațiilor, să forțați ieșirea din shell și, pentru siguranță, să opriți și să reporniți iPad-ul sau iPhone-ul. Redeschideți iSH și acum, pe lângă mesajul „Welcome to Alpine!” și informațiile despre pornirea cu apk, veți vedea mesajul standard de bun venit al login-ului fish: Bine ați venit în fish, shell-ul interactiv prietenos. Ura!

Lansăm linia de comandă Linux pe iOS

Configurarea Python și pip

Am decis să adaug Python (versiunea 3.x), nu doar pentru a scrie cod, ci și pentru că folosesc mai multe programe pe Python. Să-l instalăm:

apk add python3

Deși Python 2.x este învechit, îl putem instala și pe acesta:

apk add python

Să instalăm managerul de pachete Python numit pip și setuptools:

python3 -m ensurepip --default-pip

Instalarea și configurarea managerului de pachete vor dura un pic de timp, așa că vă rog să așteptați.

Apoi, vom putea descărca instrumentul pentru transferul de fișiere prin rețea curl:

apk add curl

Citind manualele

Fish folosește completarea automată integrată bazată pe paginile man. La fel ca alți utilizatori de linie de comandă, eu folosesc manualul man, iar în Alpine nu este instalat. Așa că l-am instalat cu pagerul terminalului less:

apk add man man-pages less less-doc

În plus față de man, folosesc minunatul proiect tldr pages, care oferă pagini man simplificate și gestionate de comunitate.

L-am instalat cu ajutorul pip:

pip install tldr

Comanda tldr se conectează la web pentru a obține pagini atunci când întâlnește o cerere pentru o nouă pagină. Dacă aveți nevoie să știți cum să folosiți o comandă, puteți scrie ceva de genul tldr curl și obțineți o descriere în limba engleză simplă și exemple bune de utilizare a comenzii.

Desigur, toată această muncă de instalare poate fi automatizată cu ajutorul dotfiles sau al unui script de instalare, dar de fapt, asta nu se potrivește foarte bine cu ideologia Alpine — configurarea unei instalări minime clar adaptate nevoilor tale. Mai mult, a luat atât de mult timp, nu-i așa?

Informații suplimentare

În Wiki iSH există o pagină "what works" cu rapoarte despre ce pachete funcționează acum. Apropo, se pare că npm nu funcționează acum.

Pe o altă pagină wiki se explică cum să accesați fișierele iSH din aplicația iOS Files. Acesta este unul dintre modurile de a muta și copia fișiere.

De asemenea, puteți instala Git (da! apk add git ) și încărcați munca dvs. în depozitul remote sau transferați-o pe server prin SSH. Și, desigur, puteți descărca și rula orice număr de proiecte open-source minunate de pe GitHub.

Mai multe informații despre iSH pot fi găsite la aceste linkuri:

În numele publicității

VDS oferă servere virtuale pe Linux sau Windows. Folosim doar echipamente de marcă, cea mai bună din categoria sa panou de control pentru servere dezvoltat de noi și unele dintre cele mai bune centre de date din Rusia și UE. Grăbiți-vă să comandați!

Lansăm linia de comandă Linux pe iOS

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster