Запустите командную строку Linux на вашем iPad

Знаете ли вы, что вы можете запустить командную строку Linux на своем устройстве iOS? Вы можете спросить: «Зачем мне использовать текстовые приложения на моем крошечном iPhone?» Хорошо, достаточно честно. Это вполне разумный вопрос. Вы, вероятно, знаете ответ: пользователи Linux хотят иметь возможность использовать любое устройство, и они также хотят использовать свои собственные настройки.

И больше всего им нужен вызов.

У меня есть iPad 2 Mini семилетней давности, который все еще отлично подходит для чтения электронных книг и других задач. Но я также хочу использовать его для доступа к командной строке для приложений и моего набора программ и скриптов, без которых я не могу обойтись. Мне нужна среда, к которой я привык, а также стандартная среда разработки. Вот как я это сделал.

Подключиться к клавиатуре

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

Получите оболочку на iOS

У вас есть два варианта запуска полной системы Linux на iOS:

  • Безопасная оболочка (SSH) в компьютере с Linux
  • Запустите виртуализированную систему с помощью Alpine Linux с iSH, который является открытым исходным кодом, но должен быть установлен с помощью проприетарного приложения Apple TestFlight.

В качестве альтернативы есть два приложения-эмулятора терминала с открытым исходным кодом, которые предоставляют инструменты с открытым исходным кодом в ограниченной среде. Это наиболее ограниченный вариант — он действительно не позволяет вам запускать Linux, но вы используете инструменты Linux. Существуют серьезные ограничения на то, что вы можете делать на устройстве с этими приложениями, но они предоставляют вам некоторые функции командной строки.

Я рассмотрю самый простой подход, прежде чем искать более сложные решения.

Вариант 1. Оболочка в песочнице

Один из самых простых способов начать работу — использовать приложение LibTerm для iOS . Это изолированная оболочка командной строки с открытым исходным кодом с более чем 80 командами, объединенными в приложение за $ 0. Он поставляется с Python 2.7, Python 3.7, Lua, C, Clang и другими.

В том же духе находится  a-Shell , описываемый как «текстовый пользовательский интерфейс для экранной платформы». a-Shell является открытым исходным кодом , находится в активной разработке, предоставляет доступ к файловой системе и поставляется с Lua, Python, Tex, Vim, JavaScript, C и C ++, а также с Clang и Clang ++. Он даже позволяет вам устанавливать пакеты Python с помощью pip.

Вариант 2: SSH где угодно

Один шаг до загрузки приложения — это настройка клиента SSH. Уже давно можно использовать одно из многих клиентских приложений SSH на iOS для подключения к серверу, на котором запущен дистрибутив Linux или BSD. Преимущество использования SSH заключается в том, что на вашем сервере может быть запущен любой дистрибутив с любым программным обеспечением, которое вам нравится. Вы работаете удаленно, и ваш вывод просто передается в эмулятор терминала вашего устройства iOS.

Blink shell — популярное платное SSH-приложение с открытым исходным кодом . За пределами маленького экрана использование этого программного обеспечения похоже на подключение к серверу через любую другую командную строку. Терминал Blink выглядит красиво, с рядом включенных тем и возможностью создавать свои собственные темы, включая настройку и добавление новых шрифтов.

Вариант 3: запустить Linux

Использование SSH для подключения к серверу под управлением Linux — отличный способ получить доступ к приглашению, но для этого требуется доступ к внешнему серверу и соединение. Это не самый плохой барьер для входа, но им нельзя пренебречь, и вы можете использовать Linux без этого требования к серверу.

Если это ваш случай, вам придется придумать что-то более передовое. TestFlight — это проприетарный сервис для развертывания приложений, находящихся в стадии разработки, перед их отправкой в ​​Apple App Store. Вы можете загрузить приложение TestFlight из магазина, а затем подписаться на ряд тестовых приложений. Приложения в TestFlight позволяют использовать ограниченное количество внешних бета-тестеров (обычно до 10 000) в течение ограниченного времени. Чтобы загрузить тестовое приложение, вы должны получить доступ к ссылке прямо со своего устройства, которая обычно находится на веб-сайте разработчика тестового приложения.

Запускаем Alpine Linux с iSH

iSH  — это приложение TestFlight с открытым исходным кодом, которое запускает виртуальную машину с дистрибутивом Alpine Linux из коробки (но вы можете запускать другие дистрибутивы, немного повозившись).

Важный нюанс: это экспериментально . Поскольку iSH в настоящее время является тестовым приложением, не ожидайте постоянного или надежного обслуживания. Приложения TestFlight ограничены по времени. Моя текущая сборка длится 60 дней. Это означает, что через 60 дней я буду заблокирован, и мне придется вернуться к следующему этапу тестирования iSH. Кроме того, я потеряю свои файлы, если не экспортирую их с помощью файлов на iOS или не сохраню их на хосте Git или с помощью SSH . Чтобы было ясно: не полагайтесь на это, чтобы продолжить работу! Не кладите сюда ничего важного! Сделайте резервную копию своей работы в другом месте!

Установить iSH

Начните с установки TestFlight через App Store. Затем установите iSH, получив ссылку для установки на его веб-сайте. Есть еще один метод установки, использующий AltStore, но я его не пробовал. Или, если у вас есть платная учетная запись разработчика, вы можете загрузить репозиторий iSH с GitHub и развернуть его самостоятельно.

Используя ссылку, TestFlight устанавливает приложение iSH на ваше устройство. Как и любое другое приложение, оно отображается на вашем экране со значком.

Управлять пакетами

iSH запускает эмулятор x86 с Alpine Linux. Alpine — это крошечный дистрибутив размером менее 5 МБ. Это был мой первый запуск Alpine, и я подумал, что меня не расстроит такой минималистичный дистрибутив, но на самом деле он мне очень понравился.

Alpine использует диспетчер пакетов apk , который проще, чем даже apt или pacman.

Чтобы установить пакет:

apk add package

Чтобы удалить пакет:

apk del package

Найдите другие команды и информацию с помощью:

apk --help

Обновите менеджер пакетов:

apk update apk upgrade

Получите текстовый редактор

Текстовым редактором Alpine по умолчанию является Vi, но я предпочитаю Vim, поэтому я установил его:

apk add vim

Вы можете установить Nano или Emacs, если хотите.

Сменить оболочку

Не знаю, как вы, но мне нужна  fish shell . Другие предпочитают Bash или Zsh . Но Alpine использует Ash! Ash — это ветка оболочки Dash, которая сама по себе является вилкой оригинальной оболочки Ash или Almquist . Он разработан для скорости. Я решил обменять скорость в пользу встроенного автозаполнения, цвета, управления Vim-key и подсветки синтаксиса, которые я знаю и люблю в fish shell.

Установите fish:

apk add fish

Если вместо этого вам нужен Bash, его дополнения и справочные страницы, вам нужно установить их и некоторые дополнительные вещи:

apk add bash bash-doc bash-completion

Идеология минимализма Alpine обычно означает, что некоторые программы, которые были бы одним пакетом в других дистрибутивах, делятся на несколько меньших пакетов. Это также означает, что вы можете настроить и уменьшить свою систему именно так, как вам нужно.

Изменить оболочку по умолчанию

После установки fish вы можете временно переключиться на нее и попробовать ее, набрав fishи опустив в оболочку. Но я хочу сделать fish своей оболочкой по умолчанию, а chshкоманда, к которой я привык из других дистрибутивов, не работает.

Для начала узнаем, где установлена ​​fish:

which fish

Мой вывод:

/usr/bin/fish

Затем отредактируйте оболочку входа, чтобы использовать 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, а теперь в дополнение к «Добро пожаловать в Alpine!» сообщение и информация о начале работы с apk, вы увидите приветственное сообщение для входа в систему по умолчанию: Добро пожаловать в Fish, дружественную интерактивную оболочку . Ура!

Настроить Python и pip

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

apk add python3

Хотя Python 2.x устарел, вы все равно можете его установить:

apk add python

Установите менеджер пакетов Python, pip и setuptools :

python3 -m ensurepip --default-pip

Для установки и настройки диспетчера пакетов требуется некоторое время, так что просто подождите.

Затем вы можете загрузить  curl , инструмент передачи данных по сети:

apk add curl

Прочтите руководство

Fish использует встроенное автозаполнение на основе страниц руководства. Как и другие пользователи командной строки, я полагаюсь на manруководство, а в Alpine оно не установлено. Итак, я установил его вместе с пейджером less :

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. И, конечно же, вы можете загрузить и запустить любое количество потрясающих проектов с открытым исходным кодом с GitHub в своей системе.

 

EnglishRussian