Запускаем камандны радок Linux на iOS

Запускаем камандны радок Linux на iOS

А вы ведалі, што можна запусціць камандны радок Linux на прыладзе iOS? Магчыма, вы спытаеце: "Навошта мне карыстацца тэкставымі праграмамі на iPhone?" Справядлівае пытанне. Але калі вы чытаеце Opensource.com, то, верагодна, ведаеце на яго адказ: карыстачы Linux жадаюць мець магчымасць працаваць з ім на любой прыладзе і жадаюць карыстацца ўласнымі наладамі.

Але больш за ўсё яны прагнуць вырашэння складаных задач.

У мяне ёсць сямігадовы iPad 2 Mini, які па-ранейшаму нядрэнна падыходзіць для чытання электронных кніг і іншых задач. Аднак я хачу выкарыстоўваць яго і для доступу да каманднага радка прыкладанняў з маім наборам праграм і скрыптоў, без якіх не магу працаваць. Мне трэба асяроддзе, да якога я абвык, а таксама маё стандартнае асяроддзе распрацоўкі. І вось як мне ўдалося гэтага дабіцца.

Падключэнне да клавіятуры

Працаваць з камандным радком для праграмавання праз экранную клавіятуру тэлефона ці планшэта даволі няёмка. Я рэкамендую падключыць знешнюю клавіятуру, або праз Bluetooth, або скарыстаўшыся адаптарам падлучэння камеры, каб падлучыць правадную клавіятуру (я абраў другое). Пры падлучэнні падзеленай клавіятуры Kinesis Advantage да iPhone 6 атрымліваецца дзіўная прылада, якое нагадвае карпаратыўны кібердэк з класічнай ролевай гульні Shadowrun.

Усталёўваны абалонку на iOS

Для запуску поўнафункцыянальнай сістэмы Linux на iOS ёсць два варыянты:

  • Secure shell (SSH), якая падключаецца да кампутара з Linux
  • Запуск віртуальнай сістэмы з дапамогай Alpine Linux з iSH, які з'яўляецца open source, але павінен усталёўвацца з дапамогай прапрыетарнага прыкладання TestFlight кампаніі Apple

У якасці альтэрнатывы існуюць два прыкладанні-эмулятара тэрмінала ў open source, якія прадстаўляюць магчымасць працы з open-source-інструментамі ў абмежаваным асяроддзі. Гэта самы зрэзаны варыянт - насамрэч так вы запускаеце не Linux, а прылады Linux. Пры працы з гэтымі праграмамі існуюць жорсткія абмежаванні магчымасцяў, аднак вы атрымліваеце частковую функцыянальнасць каманднага радка.

Перш чым перайсці да складаных рашэнняў, я разгледжу найпросты спосаб.

Варыянт 1: абалонка ў «пясочніцы»

Адзін з самых простых спосабаў - усталяваць прыкладанне для iOS LibTerm. Гэта апенсорная камандная абалонка ў «пясочніцы» з падтрымкай больш за 80 каманд па кошце ў нуль даляраў. У камплекце з ёй пастаўляюцца Python 2.7, Python 3.7, Lua, C, Clang і шматлікае іншае.

Прыкладна такі ж функцыянальнасцю валодае а-шкарлупіна, апісваная распрацоўшчыкамі як "тэставы інтэрфейс карыстальніка для платформы з экранным уводам". Зыходнікі a-Shell выкладзены з адкрытым зыходным кодам, яна знаходзіцца ў актыўнай распрацоўцы, дае доступ да файлавай сістэмы і пастаўляецца з Lua, Python, Tex, Vim, JavaScript, C і C++, а таксама з Clang і Clang++. Яна нават дазваляе усталёўваць з дапамогай pip пакеты Python.

Варыянт 2: SSH

Яшчэ адным крокам наперад у параўнанні са спампоўкай прыкладання з'яўляецца настройка SSH-кліента. Ужо доўгі час мы маглі выкарыстоўваць любое са мноства прыкладанняў SSH-кліентаў для iOS, каб падлучацца да сервера, на якім запушчаны Linux ці BSD. Перавага выкарыстання SSH заключаецца ў тым, што на серверы можа працаваць любы дыстрыбутыў з любым праграмным забеспячэннем. Вы працуеце выдалена і вынікі працы проста перадаюцца ў эмулятар тэрмінала на прыладзе iOS.

Blink shell - гэта папулярнае платнае SSH-дадатак у з адкрытым зыходным кодам. Калі не звяртаць увагі на маленькі экран прылады, тое выкарыстанне гэтага ПА падобна на падлучэнне да сервера праз любы іншы камандны радок. Тэрмінал Blink выдатна выглядае, мае мноства гатовых тэм і функцыю стварэння ўласных, у тым ліку магчымасць наладкі і даданні новых шрыфтоў.

Варыянт 3: запуск Linux

Выкарыстанне SSH для падлучэння да сервера пад Linux - гэта выдатны спосаб доступу да каманднага радка, але для яго патрабуецца вонкавы сервер і сеткавае падлучэнне. Гэта не самая вялікая перашкода, але яе нельга цалкам ігнараваць, таму вам можа запатрабавацца працаваць з Linux без сервера.

Калі гэта ваш выпадак, вам трэба будзе зрабіць яшчэ адзін крок наперад. TestFlight – гэта прапрыетарны сэрвіс для ўстаноўкі распрацоўваных прыкладанняў яшчэ да таго, як яны былі выкладзены ў Apple App Store. Дадатак TestFlight можна ўсталяваць з App Store, а затым карыстацца тэставымі праграмамі. Прыкладанні ў TestFlight дазваляюць на працягу абмежаванага часу працаваць з імі абмежаванай колькасці бэта-тэстараў (звычайна да 10 000). Каб спампаваць тэставае прыкладанне, трэба перайсці са сваёй прылады па спасылцы, якая звычайна знаходзіцца на вэб-сайце распрацоўніка тэставага прыкладання.

Запуск Alpine Linux з iSH

ISH - Гэта open-source-дадатак TestFlight, якое запускае віртуальную машыну з гатовым дыстрыбутывам Alpine Linux (трохі папрацаваўшы, можна запускаць і іншыя дыстрыбутывы).

Важная асаблівасць: дадатак эксперыментальнае. Так як iSH зараз пакуль з'яўляюцца тэставым дадаткам, не чакайце пастаяннай і надзейнай працы. Прыкладанні TestFlight абмежаваныя па часе. Мая бягучая зборка будзе працаваць усяго 60 дзён. Гэта азначае, што праз 60 дзён мяне выключаць і давядзецца зноў далучацца да наступнага этапу тэставання iSH. Больш за тое, я страчу ўсе свае файлы, калі не экспартую іх з дапамогай Files на iOS ці не скапірую іх на Git-хост або праз SSH. Іншымі словамі: Не спадзявайцеся, што ўсё гэта будзе працягваць працаваць! Не змяшчайце ў сістэму нічога важнага для вас! Выконвайце рэзервовае капіраванне ў асобнае месца!

Устаноўка iSH

Пачніце з усталёўкі TestFlight з App Store. Затым усталюеце iSH, атрымаўшы спасылку на ўстаноўку з вэб-сайта прыкладання. Ёсць яшчэ адзін спосаб усталёўкі з выкарыстаннем AltStore, але я яго не спрабаваў. Ці, калі ў вас ёсць платны рахунак распрацоўніка, можаце спампаваць рэпазітар iSH з GitHub і ўсталяваць яго самастойна.

Пры дапамозе спасылкі TestFlight ўсталюе прыкладанне iSH на вашу прыладу. Як і ў выпадку з любым іншым дадаткам, на экране з'явіцца значок.

Упраўленне пакетамі

iSH выконвае эмулятар x86 з Alpine Linux. Alpine – гэта малюсенькі дыстрыбутыў памерам менш за 5 МБ. Я ўпершыню працаваў з Alpine, таму думаў, што такі мінімалізм будзе раздражняць, але насамрэч ён мне вельмі спадабаўся.

Запускаем камандны радок Linux на iOS
У Alpine выкарыстоўваецца менеджэр пакетаў АПК, які прасцей, чым нават apt ці pacman.

Як усталяваць пакет:

apk add package

Як выдаліць пакет:

apk del package

Як даведацца іншыя каманды і інфармацыю:

apk --help

Абнаўленне мэнэджара пакетаў:

apk update
apk upgrade

Устаноўка тэкставага рэдактара

Стандартным тэкставым рэдактарам Alpine з'яўляецца Vi, але я аддаю перавагу Vim, таму ўсталяваў яго:

apk add vim

Пры жаданні можна ўсталяваць Nano ці Emacs.

Змена абалонкі

Не ведаю, як наконт вас, а мне патрэбна была малюсках. Іншыя людзі аддаюць перавагу Біць або Zsh. Аднак у Alpine выкарыстоўваецца ash! Ash - гэта форк абалонкі Dash, якая сама з'яўляецца форкам арыгінальнага ash, або Абалонка Альмквіста. Яе прыярытэтам з'яўляецца хуткасць. Я вырашыў абмяняць хуткасць на ўбудаваны аўтададатак, колеры, кіраванне клавішамі Vim і падсвятленне сінтаксісу, якія я кахаю і ведаю па fish shell.

Ўстаноўка fish:

apk add fish

Калі вам патрэбна Bash з яе аўтададаткам і man-старонкамі, то ўсталюеце іх:

apk add bash bash-doc bash-completion

Мінімалістычная ідэалогія Alpine звычайна азначае, што некаторыя праграмы, якія ў іншых дыстрыбутывах з'яўляюцца адным пакетам, будуць падзелены на некалькі пакетаў паменш. Таксама гэта азначае, што вы можаце наладжваць і памяншаць памер сістэмы роўна так, як вам гэтага жадаецца.

Падрабязней аб усталёўцы Bash можна пазнаць з гэтага тутарыялу.

Змена абалонкі па змаўчанні

Пасля ўстаноўкі fish можна часова пераключыцца на яе, увёўшы fish і перайшоўшы ў абалонку. Але я хачу зрабіць fish абалонкай па змаўчанні, а каманда chsh, якую я выкарыстоўваў у іншых дыстрыбутывах, не працавала.

Спачатку даведаемся, куды ўсталявалася fish:

which fish

Вось, што атрымалася ў мяне:

/usr/bin/fish

Далей зменім login shell на fish. Можаце выкарыстоўваць любы зручны вам рэдактар. Калі ў пачатковец, то ўсталюеце Nano (камандай apk add nano), каб можна было адрэдагаваць файлы канфігурацыі і захаваць іх праз CTRL+X, пацвердзіць і выйсці.

Але я выкарыстаў Vim:

vim /etc/passwd

У мяне першы радок быў такі:

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

Каб зрабіць fish абалонкай па змаўчанні, зменім гэты радок на наступны:

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

Затым захаваем файл і выйдзем.

Я ўпэўнены, што існуе добры спосаб змяніць шлях да абалонкі, каб яе можна было выкарыстоўваць адразу. Але я яго не ведаю, таму рэкамендую вернуцца ў браўзэр прыкладанняў, прымусова выканаць выхад з абалонкі і для надзейнасці выключыць і перазагрузіць iPad ці iPhone. Зноў адкрыйце iSH і зараз акрамя паведамлення "Welcome to Alpine!" і інфармацыі аб запуску з apk вы ўбачыце стандартнае прывітальнае паведамленне лагіна fish: Сардэчна запрашаем у рыбу, дружалюбную інтэрактыўную абалонку. Ура!

Запускаем камандны радок Linux на iOS

Настройка Python і pip

Я вырашыў дадаць Пітон (версію 3.x), не толькі для таго, каб пісаць код, але і таму, што я карыстаюся некалькімі праграмамі на Python. Усталюем яго:

apk add python3

Хоць Python 2.x састарэлы, можна ўсталяваць і яго:

apk add python

Усталюем менеджэр пакетаў Python пад назвай pip і ўстаноўкі:

python3 -m ensurepip --default-pip

Для ўсталёўкі і налады мэнэджара пакетаў спатрэбіцца нейкі час, таму проста пачакайце.

Затым можна будзе спампаваць прыладу для перадачы файлаў па сетцы завітак:

apk add curl

Чытаем мануалы

Fish выкарыстоўвае убудаваны аўтададатак на аснове man-старонак. Як і іншыя карыстачы каманднага радка, я карыстаюся мануалам man, а ў Alpine ён не ўсталяваны. Таму я ўсталяваў яго з тэрмінальным пэйджарам менш:

apk add man man-pages less less-doc

У дадатак да man я выкарыстоўваю цудоўны праект tldr pages, які прадстаўляе спрошчаныя і кіраваныя супольнасцю man-старонкі.

Я ўсталяваў яго з дапамогай pip:

pip install tldr

Каманда tldr злучаецца з вэбам для атрымання старонак, калі сустракае запыт на новую старонку. Калі вам трэба даведацца, як карыстацца камандай, то вы можаце напісаць нешта тыпу tldr curl і атрымаць апісанне на простым англійскай мове і добрыя прыклады па выкарыстанні каманды.

Зразумела, усю гэтую працу па ўсталёўцы можна аўтаматызаваць з дапамогай dotfiles ці скрыпту ўсталёўкі, але насамрэч гэта не вельмі адпавядае ідэалогіі Alpine – наладзе мінімальнай усталёўкі выразна пад свае запатрабаванні. Акрамя таго, гэта заняло так шмат часу, праўда?

Дадатковая інфармацыя

У Вікі iSH ёсць старонка "што працуе" са справаздачамі аб тым, якія пакеты зараз працуюць. Дарэчы, падобна, што npm зараз не працуе.

На яшчэ адной вікі-старонцы тлумачыцца, як атрымаць доступ да файлаў iSH з прыкладання iOS Files. Гэта адзін са спосабаў, якім можна перамяшчаць і капіраваць файлы.

Можна таксама ўсталяваць Git (так! apk add git ) і пушыць сваю працу ў выдалены рэпазітар або перадаваць яго на сервер праз SSH. І, зразумела, можна спампоўваць і запускаць любую колькасць выдатных open-source-праектаў з GitHub.

Падрабязней пра iSH можна даведацца па гэтых спасылках:

На правах рэкламы

Удзіна прапануе віртуальныя серверы на Linux ці Windows. Выкарыстоўваны выключна брэндавае абсталяванне, лепшую ў сваім родзе панэль кіравання серверамі ўласнай распрацоўкі і адны з лепшых дата-цэнтраў у Расіі і ЕС. Паспяшайцеся замовіць!

Запускаем камандны радок Linux на iOS

Крыніца: habr.com

Дадаць каментар