А вы знали, что можно запустить командную строку Linux на устройстве iOS? Возможно, вы спросите: «Зачем мне пользоваться текстовыми приложениями на iPhone?» Справедливый вопрос. Но если вы читаете Opensource.com, то, вероятно, знаете на него ответ: пользователи Linux хотят иметь возможность работать с ним на любом устройстве и хотят пользоваться собственными настройками.
Но больше всего они жаждут решения сложных задач.
У меня есть семилетний iPad 2 Mini, который по-прежнему неплохо подходит для чтения электронных книг и других задач. Однако я хочу использовать его и для доступа к командной строке приложений с моим набором программ и скриптов, без которых не могу работать. Мне нужно окружение, к которому я привык, а также моя стандартная среда разработки. И вот как мне удалось этого добиться.
Подключение к клавиатуре
Работать с командной строкой для программирования через экранную клавиатуру телефона или планшета довольно неудобно. Я рекомендую подключить внешнюю клавиатуру, или через Bluetooth, или воспользовавшись адаптером подключения камеры, чтобы подключить проводную клавиатуру (я выбрал второе). При подключении разделённой клавиатуры Kinesis Advantage к iPhone 6 получается странное устройство, напоминающее
Устанавливаем оболочку на iOS
Для запуска полнофункциональной системы Linux на iOS есть два варианта:
- Secure shell (SSH), подключаемая к компьютеру с Linux
- Запуск виртуальной системы с помощью Alpine Linux с iSH, который является open source, но должен устанавливаться с помощью проприетарного приложения TestFlight компании Apple
В качестве альтернативы существуют два приложения-эмулятора терминала в open source, предоставляющие возможность работы с open-source-инструментами в ограниченном окружении. Это самый урезанный вариант — на самом деле так вы запускаете не Linux, а инструменты Linux. При работе с этими приложениями существуют жёсткие ограничения возможностей, однако вы получаете частичную функциональность командной строки.
Прежде чем перейти к сложным решениями, я рассмотрю простейший способ.
Вариант 1: оболочка в «песочнице»
Один из самых простых способов — установить приложение для iOS
Примерно такой же функциональностью обладает
Вариант 2: SSH
Ещё одним шагом вперёд по сравнению со скачиванием приложения является настройка SSH-клиента. Уже долгое время мы могли использовать любое из множества приложений SSH-клиентов для iOS, чтобы подключаться к серверу, на котором запущен Linux или BSD. Преимущество использования SSH заключается в том, что на сервере может работать любой дистрибутив с любым программным обеспечением. Вы работаете удалённо и результаты работы просто передаются в эмулятор терминала на устройстве iOS.
Вариант 3: запуск Linux
Использование SSH для подключения к серверу под Linux — это отличный способ доступа к командной строке, но для него требуется внешний сервер и сетевое подключение. Это не самая большая преграда, но её нельзя полностью игнорировать, поэтому вам может потребоваться работать с Linux без сервера.
Если это ваш случай, то вам нужно будет сделать ещё один шаг вперёд.
Запуск Alpine Linux с iSH
Важная особенность: приложение экспериментальное. Так как iSH сейчас пока являются тестовым приложением, не ожидайте постоянной и надёжной работы. Приложения TestFlight ограничены по времени. Моя текущая сборка будет работать всего 60 дней. Это означает, что через 60 дней меня исключат и придётся снова присоединяться к следующему этапу тестирования iSH. Более того, я потеряю все свои файлы, если не экспортирую их с помощью Files на iOS или не скопирую их на Git-хост или
Установка iSH
Начните с установки
При помощи ссылки TestFlight установит приложение iSH на ваше устройство. Как и в случае с любым другим приложением, на экране появится значок.
Управление пакетами
iSH выполняет эмулятор x86 с Alpine Linux. Alpine — это крошечный дистрибутив размером меньше 5 МБ. Я впервые работал с Alpine, поэтому думал, что такой минимализм будет раздражать, но на самом деле он мне очень понравился.
В Alpine используется менеджер пакетов
Как установить пакет:
apk add package
Как удалить пакет:
apk del package
Как узнать другие команды и информацию:
apk --help
Обновление менеджера пакетов:
apk update
apk upgrade
Установка текстового редактора
Стандартным текстовым редактором Alpine является Vi, но я предпочитаю Vim, поэтому установил его:
apk add vim
При желании можно установить Nano или Emacs.
Смена оболочки
Не знаю, как насчёт вас, а мне нужна была
Установка 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
Я решил добавить
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 я использую великолепный
Я установил его с помощью pip:
pip install tldr
Команда tldr
соединяется с вебом для получения страниц, когда встречает запрос на новую страницу. Если вам нужно узнать, как пользоваться командой, то вы можете написать что-то типа tldr curl
и получить описание на простом английском языке и хорошие примеры по использованию команды.
Разумеется, всю эту работу по установке можно автоматизировать с помощью
Дополнительная информация
В Вики iSH есть страница "
На ещё одной вики-странице объясняется, как
Можно также установить Git (да! apk add git
) и пушить свою работу в удалённый репозиторий или передавать его на сервер через SSH. И, разумеется, можно скачивать и запускать любое количество замечательных open-source-проектов с GitHub.
Подробнее об iSH можно узнать по этим ссылкам:
На правах рекламы
Вдсина предлагает
Источник: habr.com