Uruchamiamy terminal Linux na iOS

Uruchamiamy terminal Linux na iOS

Czy wiedziałeś, że można uruchomić wiersz poleceń Linux na urządzeniach iOS? Możesz zapytać: „Po co mi korzystać z aplikacji tekstowych na iPhonie?” Słuszne pytanie. Ale jeśli czytasz Opensource.com, to prawdopodobnie znasz na nie odpowiedź: użytkownicy Linuxa chcą mieć możliwość pracy na każdym urządzeniu i korzystać z własnych ustawień.

Ale najbardziej pragną rozwiązywać skomplikowane problemy.

Mam siedmioletniego iPada 2 Mini, który nadal całkiem dobrze nadaje się do czytania e-booków i innych zadań. Jednak chcę również używać go do dostępu do wiersza poleceń aplikacji z moim zestawem programów i skryptów, bez których nie mogę pracować. Potrzebuję środowiska, do którego jestem przyzwyczajony, a także mojego standardowego środowiska programistycznego. Oto, jak udało mi się to osiągnąć.

Podłączenie klawiatury

Praca z wierszem poleceń do programowania przez ekranową klawiaturę telefonu lub tabletu jest dość niewygodna. Polecam podłączyć zewnętrzną klawiaturę, albo przez Bluetooth, albo wykorzystując adapter do podłączenia aparatu do podłączenia przewodowej klawiatury (wybrałem tę drugą opcję). Podłączenie oddzielonej klawiatury Kinesis Advantage do iPhone'a 6 tworzy dziwne urządzenie przypominające korporacyjny cyberdeck z klasycznej gry fabularnej Shadowrun.

Instalacja powłoki na iOS

Aby uruchomić pełnoprawny system Linux na iOS, są dwie opcje:

  • Secure shell (SSH), podłączane do komputera z Linuxem
  • Uruchomienie wirtualnego systemu z Alpine Linux za pomocą iSH, który jest oprogramowaniem open source, ale musi być zainstalowane za pomocą zastrzeżonej aplikacji TestFlight firmy Apple.

Alternatywnie są dwa terminalowe aplikacje emulatora w open source, które umożliwiają pracę z narzędziami open source w ograniczonym środowisku. To najprostsza opcja — w rzeczywistości uruchamiasz nie Linuxa, a narzędzia Linux. Praca z tymi aplikacjami wiąże się z surowymi ograniczeniami funkcjonalności, jednak otrzymujesz częściową funkcjonalność wiersza poleceń.

Zanim przejdę do bardziej złożonych rozwiązań, rozważę najprostszy sposób.

Opcja 1: powłoka w „sandboxie”

Jednym z najprostszych sposobów jest zainstalowanie aplikacji na iOS LibTerm. To oprogramowanie open source "Piaskownica" z interfejsem wiersza poleceń, obsługująca ponad 80 poleceń, za cenę 0 dolarów. W zestawie znajdują się Python 2.7, Python 3.7, Lua, C, Clang i wiele innych.

Z podobną funkcjonalnością dysponuje a-Shell, opisywana przez twórców jako "interfejs testowy dla platformy z wejściem ekranowym". Źródła a-Shell są dostępne jako open source, jest aktywnie rozwijana, zapewnia dostęp do systemu plików i zawiera Lua, Python, Tex, Vim, JavaScript, C i C++, a także Clang i Clang++. Umożliwia również instalowanie pakietów Python za pomocą pip.

Opcja 2: SSH

Kolejnym krokiem naprzód w porównaniu do pobierania aplikacji jest skonfigurowanie klienta SSH. Już od dłuższego czasu możemy korzystać z różnych aplikacji klientów SSH dla iOS, aby łączyć się z serwerem działającym na Linuksie lub BSD. Zaletą korzystania z SSH jest to, że na serwerze może działać dowolna dystrybucja z dowolnym oprogramowaniem. Pracujecie zdalnie, a wyniki pracy są przesyłane do emulatora terminala na urządzeniu iOS.

Blink shell — to popularna płatna aplikacja SSH w open source. Jeśli pominąć mały ekran urządzenia, korzystanie z tego oprogramowania przypomina łączenie z serwerem przez zwykły wiersz poleceń. Terminal Blink wygląda świetnie, ma wiele gotowych motywów oraz funkcję tworzenia własnych, w tym możliwość dostosowywania i dodawania nowych czcionek.

Opcja 3: uruchamianie Linuxa

Korzystanie z SSH do łączenia się z serwerem działającym pod Linuksem to doskonały sposób na dostęp do wiersza poleceń, ale wymaga to zewnętrznego serwera i połączenia sieciowego. To nie jest największa przeszkoda, ale nie można jej całkowicie zignorować, więc może być konieczne pracowanie z Linuksem bez serwera.

Jeśli to jest Twój przypadek, musisz zrobić kolejny krok naprzód. TestFlight — to autorski serwis do instalacji aplikacji w trakcie ich tworzenia, jeszcze przed ich opublikowaniem w Apple App Store. Aplikację TestFlight można zainstalować z App Store, a następnie korzystać z aplikacji testowych. Aplikacje w TestFlight pozwalają na współpracę z ograniczoną liczbą beta testerów (zwykle do 10 000) przez ograniczony czas. Aby pobrać aplikację testową, należy przejść na swoje urządzenie do linku, który zazwyczaj znajduje się na stronie internetowej dewelopera testowej aplikacji.

Uruchamianie Alpine Linux z iSH

iSH — to open-source'owa aplikacja TestFlight, uruchamiająca maszynę wirtualną z gotowym dystrybucją Alpine Linux (po niewielkich staraniach można również uruchamiać inne dystrybucje).

Ważna cecha: aplikacja jest eksperymentalna. Ponieważ iSH jest w tej chwili aplikacją testową, nie oczekuj stałej i niezawodnej pracy. Aplikacje TestFlight są ograniczone czasowo. Moja aktualna wersja będzie działać tylko przez 60 dni. Oznacza to, że po 60 dniach zostanę wykluczony i będę musiał ponownie dołączyć do następnego etapu testowania iSH. Co więcej, stracę wszystkie swoje pliki, jeśli ich nie wyeksportuję przy pomocy aplikacji Files na iOS lub nie skopiuję ich na Git-host lub przez SSH. Innymi słowy: Nie miej nadziei, że to wszystko będzie działać wiecznie! Nie przechowuj w systemie niczego dla Ciebie ważnego! Wykonuj kopie zapasowe w innym miejscu!

Instalacja iSH

Rozpocznij od instalacji TestFlight z App Store. Następnie zainstaluj iSH, uzyskując link do instalacji ze strony aplikacji. Jest też inny sposób instalacji przy użyciu AltStore, ale go nie próbowałem. Lub, jeśli masz płatne konto dewelopera, możesz pobrać repozytorium iSH z GitHub i zainstalować je samodzielnie.

Dzięki linkowi TestFlight zainstaluje się aplikacja iSH na twoim urządzeniu. Jak w przypadku każdej innej aplikacji, na ekranie pojawi się ikona.

Zarządzanie pakietami

iSH uruchamia emulator x86 z Alpine Linux. Alpine to maleńka dystrybucja o rozmiarze mniejszym niż 5 MB. Po raz pierwszy pracowałem z Alpine, więc myślałem, że taki minimalizm będzie irytujący, ale w rzeczywistości bardzo mi się podobało.

Uruchamiamy terminal Linux na iOS
W Alpine używa się menedżera pakietów apk, który jest prostszy niż nawet apt czy pacman.

Jak zainstalować pakiet:

apk add package

Jak usunąć pakiet:

apk del package

Jak poznać inne komendy i informacje:

apk --help

Aktualizacja menedżera pakietów:

apk update
apk upgrade

Instalacja edytora tekstu

Standardowym edytorem tekstu w Alpine jest Vi, ale ja preferuję Vim, dlatego go zainstalowałem:

apk add vim

Można również zainstalować Nano lub Emacs, jeśli chcesz.

Zmiana powłoki

Nie wiem jak wy, ale ja potrzebowałem fish shell. Inni wolą Bash lub Zsh. Jednak w Alpine używana jest ash! Ash to fork powłoki Dash, która sama jest forkiem oryginalnej ash, czyli Almquist shell. Jej priorytetem jest szybkość. Zdecydowałem się wymienić szybkość na wbudowane autouzupełnienie, kolory, kontrolę klawiszy Vim i podświetlenie składni, które uwielbiam i znam z fish shell.

Instalacja fish:

apk add fish

Jeśli potrzebujesz Bash z jej autouzupełnieniem i stronami man, zainstaluj je:

apk add bash bash-doc bash-completion

Minimalistyczna ideologia Alpine zazwyczaj oznacza, że niektóre programy, które w innych dystrybucjach są jednym pakietem, będą podzielone na kilka mniejszych pakietów. Oznacza to również, że możesz dostosować i zmniejszyć rozmiar systemu dokładnie tak, jak chcesz.

Więcej informacji o instalacji Bash można znaleźć w tym tutorialu.

Zmiana powłoki domyślnej

Po zainstalowaniu fish można tymczasowo przełączyć się na nią, wpisując fish i przechodząc do powłoki. Chcę jednak uczynić fish powłoką domyślną, a polecenie chsh, którego użyłem w innych dystrybucjach, nie działało.

Najpierw sprawdźmy, gdzie zainstalowano fish:

which fish

Oto, co mi wyszło:

/usr/bin/fish

Następnie zmienimy powłokę logowania na fish. Możesz użyć dowolnego wygodnego edytora. Jeśli jesteś nowy, zainstaluj Nano (polecenie apk add nano), aby edytować pliki konfiguracyjne i zapisać je przez CTRL+X, potwierdź i wyjdź.

Ale ja użyłem Vima:

vim /etc/passwd

Moja pierwsza linia wyglądała tak:

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

Aby uczynić fish powłoką domyślną, zmienimy ten wiersz na następujący:

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

Następnie zapisz plik i wyjdź.

Jestem pewien, że istnieje dobry sposób, aby zmienić ścieżkę do powłoki, aby można było używać jej od razu. Ale go nie znam, dlatego polecam wrócić do przeglądarki aplikacji, wymusić wylogowanie się z powłoki i dla pewności wyłączyć i ponownie uruchomić iPada lub iPhone'a. Ponownie otwórz iSH i teraz poza komunikatem „Witamy w Alpine!” oraz informacjami o uruchamianiu z apk zobaczysz standardowy komunikat powitalny logowania fish: Witaj w fish, przyjaznej interaktywnej powłoce. Hurra!

Uruchamiamy terminal Linux na iOS

Konfiguracja Pythona i pip

Postanowiłem dodać Python (wersję 3.x), nie tylko po to, by pisać kod, ale również dlatego, że korzystam z kilku programów w Pythonie. Zainstalujmy go:

apk add python3

Chociaż Python 2.x jest przestarzały, można go również zainstalować:

apk add python

Zainstalujmy menedżera pakietów Pythona o nazwie pip i setuptools:

python3 -m ensurepip --default-pip

Instalacja i konfiguracja menedżera pakietów zajmie trochę czasu, więc po prostu poczekaj.

Następnie można będzie pobrać narzędzie do przesyłania plików przez sieć curl:

apk add curl

Czytamy podręczniki

Fish wykorzystuje wbudowane uzupełnianie oparte na stronach man. Tak jak inni użytkownicy powłok, korzystam z podręcznika man, ale w Alpine nie jest on zainstalowany. Dlatego zainstalowałem go wraz z terminalnym pagerem less:

apk add man man-pages less less-doc

Oprócz man, korzystam z doskonałego projektu tldr pages, który zapewnia uproszczone i współtworzone przez społeczność strony man.

Zainstalowałem go za pomocą pip:

pip install tldr

Zespół tldr łączy się z siecią, aby pobrać strony, gdy napotyka prośbę o nową stronę. Jeśli chcesz dowiedzieć się, jak używać polecenia, możesz wpisać coś takiego: tldr curl i otrzymać opis w prostym angielskim oraz dobre przykłady użycia polecenia.

Oczywiście, całą tę pracę instalacyjną można zautomatyzować za pomocą dotfiles lub skryptu instalacyjnego, ale tak naprawdę nie bardzo pasuje to do ideologii Alpine – konfiguracji minimalnej instalacji ściśle pod swoje potrzeby. Poza tym, zajęło to przecież tyle czasu, prawda?

Dodatkowe informacje

Na Wikipedii iSH znajduje się strona "co działa" z raportami o tym, jakie pakiety aktualnie działają. Swoją drogą, wygląda na to, że npm aktualnie nie działa.

Na innej stronie wiki wyjaśniono, jak uzyskać dostęp do plików iSH z aplikacji iOS Files. To jeden ze sposobów na przenoszenie i kopiowanie plików.

Można także zainstalować Git (tak! apk add git ) i przesyłać swoją pracę do zdalnego repozytorium lub przesyłać ją na serwer przez SSH. Oczywiście, można pobierać i uruchamiać dowolną ilość wspaniałych projektów open-source z GitHub.

Więcej informacji o iSH można znaleźć pod tymi linkami:

Reklama

Wydania oferując wirtualne serwery na Linuxie lub Windows. Używamy wyłącznie markowego sprzętu, najlepszy w swojej klasie panel sterowania serwerami opracowany przez nas oraz jedne z najlepszych centrów danych w Rosji i UE. Nie czekaj, zamów już teraz!

Uruchamiamy terminal Linux na iOS

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster