
А вы знали, что можно запустить командную строку 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 . Это командная оболочка в «песочнице» с поддержкой более 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.
— это популярное платное SSH-приложение в . Если не обращать внимания на маленький экран устройства, то использование этого ПО похоже на подключение к серверу через любую другую командную строку. Терминал Blink замечательно выглядит, имеет множество готовых тем и функцию создания собственных, в том числе возможность настройки и добавления новых шрифтов.
Вариант 3: запуск Linux
Использование SSH для подключения к серверу под Linux — это отличный способ доступа к командной строке, но для него требуется внешний сервер и сетевое подключение. Это не самая большая преграда, но её нельзя полностью игнорировать, поэтому вам может потребоваться работать с Linux без сервера.
Если это ваш случай, то вам нужно будет сделать ещё один шаг вперёд. — это проприетарный сервис для установки разрабатываемых приложений ещё до того, как они были выложены в Apple App Store. Приложение TestFlight можно установить из App Store, а затем пользоваться тестовыми приложениями. Приложения в TestFlight позволяют в течение ограниченного времени работать с ними ограниченному количеству бета-тестеров (обычно до 10 000). Чтобы скачать тестовое приложение, нужно перейти со своего устройства по ссылке, которая обычно находится на веб-сайте разработчика тестового приложения.
Запуск Alpine Linux с iSH
— это open-source-приложение TestFlight, запускающее виртуальную машину с готовым дистрибутивом (немного потрудившись, можно запускать и другие дистрибутивы).
Важная особенность: приложение экспериментальное. Так как iSH сейчас пока являются тестовым приложением, не ожидайте постоянной и надёжной работы. Приложения TestFlight ограничены по времени. Моя текущая сборка будет работать всего 60 дней. Это означает, что через 60 дней меня исключат и придётся снова присоединяться к следующему этапу тестирования iSH. Более того, я потеряю все свои файлы, если не экспортирую их с помощью Files на iOS или не скопирую их на Git-хост или . Иными словами: Не надейтесь, что всё это будет продолжать работать! Не помещайте в систему ничего важного для вас! Выполняйте резервное копирование в отдельное место!
Установка iSH
Начните с установки из App Store. Затем установите iSH, с веб-сайта приложения. Есть ещё один способ установки с использованием AltStore, но я его не пробовал. Или, если у вас есть платный аккаунт разработчика, можете скачать репозиторий iSH с GitHub и установить его самостоятельно.
При помощи ссылки TestFlight установит приложение iSH на ваше устройство. Как и в случае с любым другим приложением, на экране появится значок.
Управление пакетами
iSH выполняет эмулятор x86 с Alpine Linux. Alpine — это крошечный дистрибутив размером меньше 5 МБ. Я впервые работал с Alpine, поэтому думал, что такой минимализм будет раздражать, но на самом деле он мне очень понравился.

В Alpine используется менеджер пакетов , который проще, чем даже apt или pacman.
Как установить пакет:
apk add packageКак удалить пакет:
apk del packageКак узнать другие команды и информацию:
apk --helpОбновление менеджера пакетов:
apk update
apk upgradeУстановка текстового редактора
Стандартным текстовым редактором Alpine является Vi, но я предпочитаю Vim, поэтому установил его:
apk add vimПри желании можно установить Nano или Emacs.
Смена оболочки
Не знаю, как насчёт вас, а мне нужна была . Другие люди предпочитают или . Однако в 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: Welcome to fish, the friendly interactive shell. Ура!

Настройка 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 я использую великолепный , предоставляющий упрощённые и управляемые сообществом man-страницы.
Я установил его с помощью pip:
pip install tldr Команда tldr соединяется с вебом для получения страниц, когда встречает запрос на новую страницу. Если вам нужно узнать, как пользоваться командой, то вы можете написать что-то типа tldr curl и получить описание на простом английском языке и хорошие примеры по использованию команды.
Разумеется, всю эту работу по установке можно автоматизировать с помощью или скрипта установки, но на самом деле это не очень соответствует идеологии Alpine — настройке минимальной установки чётко под свои потребности. Кроме того, это ведь заняло так много времени, правда?
Дополнительная информация
В Вики iSH есть страница "" с отчётами о том, какие пакеты сейчас работают. Кстати, похоже, что .
На ещё одной вики-странице объясняется, как из приложения iOS Files. Это один из способов, которым можно перемещать и копировать файлы.
Можно также установить Git (да! apk add git ) и пушить свою работу в удалённый репозиторий или передавать его на сервер через SSH. И, разумеется, можно скачивать и запускать любое количество замечательных open-source-проектов с GitHub.
Подробнее об iSH можно узнать по этим ссылкам:
На правах рекламы
Вдсина предлагает или Windows. Используем исключительно , лучшую в своём роде панель управления серверами собственной разработки и одни из лучших дата-центров в России и ЕС. Поспешите заказать!
Источник: habr.com
