Запускаємо командний рядок 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 без сервера.

Якщо це ваш випадок, вам потрібно буде зробити ще один крок вперед. Крило! — це пропрієтарний сервіс для встановлення програм, що розробляються ще до того, як вони були викладені в 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

Почніть з установки Крило! з 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.

Установка:

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

Я вирішив додати Python (версія 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 і отримати опис простою англійською мовою і хороші приклади з використання команди.

Зрозуміло, всю цю роботу з установки можна автоматизувати за допомогою точкові файли або скрипта установки, але насправді це не дуже відповідає ідеології Alpine – налаштування мінімальної установки чітко під свої потреби. Крім того, це зайняло так багато часу, правда?

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

У Вікі iSH є сторінка "що працює"Зі звітами про те, які пакети зараз працюють. До речі, схоже, що npm зараз не працює.

Ще на одній вікі-сторінці пояснюється, як отримати доступ до файлів iSH із програми iOS Files. Це один із способів, яким можна переміщувати та копіювати файли.

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

Докладніше про iSH можна дізнатися за цими посиланнями:

На правах реклами

Вдсіна пропонує віртуальні сервери на Linux або Windows. Використовуємо виключно брендове обладнання, найкращу у своєму роді панель управління серверами власної розробки та одні з найкращих дата-центрів у Росії та ЄС. Поспішайте замовити!

Запускаємо командний рядок Linux на iOS

Джерело: habr.com

Додати коментар або відгук