Команда apk add python3 в приложении iSH завершается ошибкой «permission denied» или «not found» чаще всего из-за того, что терминал запущен не от имени root или не обновлён индекс репозиториев — это первое, что стоит проверить при сбоях пакетного менеджера. iSH представляет собой эмулятор x86, который запускает полноценный Linux-дистрибутив на базе Alpine Linux прямо на iPhone и iPad, и почти все проблемы новичков связаны именно с особенностями этой связки, а не с самими командами.
В этом материале собраны основные команды iSH на iOS: от базовой навигации по файловой системе до установки пакетов, работы с сетью и доступа к файлам iOS. Синтаксис соответствует стандартному Alpine Linux, поэтому большинство инструкций применимо и к другим системам на его основе.
Что такое iSH и какие ограничения у терминала
iSH — это приложение из App Store, которое эмулирует процессорную архитектуру x86 в пользовательском пространстве и запускает минимальный образ Alpine Linux. Это не виртуальная машина и не джейлбрейк: приложение работает в песочнице iOS, поэтому часть системных вызовов недоступна или работает медленнее, чем на нативном Linux.
Из-за эмуляции x86 на ARM-процессоре устройства производительность заметно ниже, чем у нативных приложений. Тяжёлые компиляции и ресурсоёмкие программы выполняются долго, а некоторые пакеты, требующие специфических расширений процессора, могут не запускаться вовсе. Это нормальное поведение, а не неисправность.
Также стоит учитывать, что iOS агрессивно выгружает фоновые процессы. Если свернуть приложение надолго, сессия терминала может быть завершена системой, и несохранённые данные пропадут.
Первые команды после установки
Сразу после запуска приложения вы попадаете в оболочку ash от имени пользователя root — в Alpine это поведение по умолчанию для контейнерного окружения. Первым делом обновите индекс пакетов, иначе установка программ будет завершаться ошибками о ненайденных пакетах:
apk update
apk upgrade
Далее полезно поставить базовый набор утилит, которых нет в минимальном образе:
apk add nano curl wget git python3
Проверить версию системы и окружения можно так:
- 📌
cat /etc/alpine-release— версия Alpine Linux; - 📌
uname -a— информация о ядре и архитектуре (покажет x86-эмуляцию); - 📌
df -h— свободное место в файловой системе; - 📌
whoami— текущий пользователь.
Управление пакетами через apk
Пакетный менеджер apk (Alpine Package Keeper) — центральный инструмент iSH. Его синтаксис отличается от привычных apt или yum, поэтому команды стоит запомнить отдельно.
| Команда | Назначение |
|---|---|
apk update | Обновить индекс репозиториев |
apk add имя | Установить пакет |
apk del имя | Удалить пакет |
apk search слово | Найти пакет по названию |
apk info -v | Список установленных пакетов |
Поиск пакетов поддерживает шаблоны: команда apk search py3-* покажет все пакеты, связанные с Python 3. Если нужного пакета нет в стандартных репозиториях, проверьте, не входит ли он в другой пакет под другим именем — в Alpine программы часто разбиты на мелкие компоненты.
⚠️ Внимание: не все пакеты из репозиториев Alpine работоспособны в iSH. Программы, требующие прямого доступа к ядру, systemd или специфических инструкций процессора, могут падать с ошибками. Перед установкой тяжёлого софта поищите отзывы именно про совместимость с iSH.
Навигация и работа с файлами
Файловые операции в iSH стандартны для любого Linux. Домашняя директория root — /root, а корень файловой системы — /. Вам понадобятся классические команды: ls -la для просмотра содержимого, cd для перехода между каталогами, cp, mv и rm для копирования, перемещения и удаления.
Создание и редактирование файлов удобнее всего вести через nano — он проще vi для новичков и устанавливается одной командой apk add nano. Просмотр содержимого файлов — cat файл или less файл для больших документов.
Для поиска по файловой системе используйте find / -name "имя" 2>/dev/null — перенаправление ошибок в /dev/null уберёт из вывода сообщения о недоступных каталогах, которых в песочнице iSH немало.
☑️ Базовая настройка iSH после установки
Доступ к файлам iOS из терминала
Одна из самых полезных возможностей iSH — монтирование папок iOS внутрь Linux-окружения. Это позволяет обмениваться файлами между терминалом и обычными приложениями через приложение «Файлы».
Для монтирования выполните команду mount -t ios . /mnt, после чего iSH откроет системный диалог выбора папки. Выбранная директория станет доступна по пути /mnt. Также файловая система iSH видна в приложении «Файлы» на iOS — туда можно копировать документы без терминала.
mkdir -p /mnt
mount -t ios . /mnt
ls /mnt
Размонтирование выполняется командой umount /mnt. Если каталог занят процессом, команда вернёт ошибку — сначала выйдите из каталога /mnt в другую директорию.
Почему mount иногда не срабатывает
Если диалог выбора папки не появляется, проверьте, что у iSH есть доступ к файлам в настройках iOS. Также помогает перезапуск приложения. Точное поведение зависит от версии iOS, поэтому при сбоях сверяйтесь с актуальной документацией проекта iSH.
Сетевые команды и SSH
Сетевые возможности iSH включают стандартные утилиты диагностики и подключения. Установите openssh и curl, если они ещё не добавлены:
- 🌐
ping example.com— проверка доступности хоста; - 🌐
ssh user@host— подключение к удалённому серверу; - 🌐
curl -I адрес— проверка HTTP-заголовков; - 🌐
wget адрес— скачивание файла по ссылке.
SSH-клиент в iSH работает как обычный: ключи размещаются в ~/.ssh/, конфигурация — в ~/.ssh/config. Генерация ключевой пары выполняется командой ssh-keygen, как и на обычном Linux. Генерация ключей из-за эмуляции может занять заметно больше времени, чем на десктопе, — дождитесь завершения, не прерывая процесс.
⚠️ Внимание: не храните в iSH закрытые ключи от критически важных серверов без крайней необходимости. Хотя песочница iOS изолирует данные, резервные копии и экспорт файловой системы приложения могут вывести ключи за пределы терминала. Используйте отдельные ключи с ограниченными правами.
Запуск скриптов: Python, Bash и Git
После установки python3 скрипты запускаются привычно: python3 script.py. Менеджер пакетов pip ставится командой apk add py3-pip, после чего доступна установка библиотек через pip install. Учтите, что пакеты с компилируемыми нативными расширениями могут не собраться под эмулируемой архитектурой — в таком случае ищите чисто питоновские альтернативы.
Оболочка по умолчанию — ash, но полноценный bash устанавливается командой apk add bash. Сменить оболочку для текущей сессии можно просто запустив bash, а постоянную смену — через редактирование /etc/passwd или команду chsh, если она доступна в вашей версии окружения.
Git работает без ограничений: git clone, git commit, git push выполняются как обычно. Для авторизации на GitHub удобнее использовать токены доступа или SSH-ключи, так как интерактивная авторизация через браузер внутри терминала недоступна.
Типичные ошибки и их решение
Ошибка «bad address» или зависание при выполнении программы обычно указывает на несовместимость софта с эмулятором, а не на неправильную команду. В такой ситуации помогает поиск альтернативной версии пакета или более лёгкого аналога.
Если терминал начал работать медленно, проверьте свободное место (df -h) и список запущенных процессов (ps aux). Зависшие процессы завершаются командой kill PID. При полном зависании приложения его можно перезапустить через переключатель приложений iOS — файловая система при этом сохраняется.
Полный сброс окружения доступен в настройках самого приложения iSH: там есть опция переустановки файловой системы. Перед сбросом скопируйте важные файлы через смонтированную папку iOS, иначе данные будут удалены безвозвратно.
⚠️ Внимание: сброс файловой системы iSH необратим — все установленные пакеты, скрипты и ключи внутри окружения удаляются. Предварительно выгрузите нужные данные через mount -t ios или приложение «Файлы».
Часто задаваемые вопросы
Можно ли использовать iSH без джейлбрейка?
Да, iSH распространяется через официальные каналы и работает в штатной песочнице iOS. Джейлбрейк не требуется, но из-за этого часть системных возможностей Linux недоступна.
Почему команды выполняются очень медленно?
iSH эмулирует архитектуру x86 на ARM-процессоре, что существенно снижает скорость. Это ожидаемое поведение: облегчить ситуацию можно, выбирая минимальные версии программ и избегая тяжёлых компиляций.
Как перенести файл из iPhone в iSH?
Используйте команду mount -t ios . /mnt и выберите нужную папку в системном диалоге, либо скопируйте файл через приложение «Файлы» — файловая система iSH отображается там как отдельное расположение.
Работает ли в iSH sudo?
По умолчанию сессия запускается от root, поэтому sudo не нужен. Если вы создали отдельного пользователя, пакет sudo можно установить через apk add sudo и настроить стандартным образом.
Можно ли запускать iSH в фоне?
iOS ограничивает фоновую работу приложений, поэтому длительные процессы могут быть прерваны системой. Для стабильной работы держите iSH на переднем плане; точное поведение зависит от версии iOS.