Ошибка sub-process /data/data/com.termux/files/usr/bin/dpkg returned an error code (1) появляется в Termux в момент установки или обновления пакетов, когда менеджер пакетов dpkg прерывает операцию из-за повреждённой установки, нехватки места или прерванного предыдущего процесса. Типичный сценарий: вы запускаете pkg install или apt upgrade, загрузка доходит до этапа распаковки, и терминал выдаёт строку с кодом ошибки 1, после чего ни один пакет больше не устанавливается.
Сама по себе эта ошибка не означает «смерть» окружения Termux. Код 1 — это общий сигнал dpkg о том, что один из подпроцессов (скрипт настройки пакета, распаковка архива, запись файла) завершился неудачно. В большинстве ситуаций проблему можно устранить штатными командами без переустановки приложения, и ниже разобраны все рабочие способы — от самого простого к более радикальным.
Что означает эта ошибка и почему она возникает
Менеджер пакетов dpkg — это низкоуровневый инструмент, который лежит в основе apt и pkg в Termux. Когда вы устанавливаете пакет, dpkg распаковывает файлы в /data/data/com.termux/files/usr и запускает скрипты настройки. Если любой из этих этапов падает, dpkg помечает пакет как «полунастроенный» и блокирует дальнейшие операции, пока состояние не будет исправлено.
Причины могут быть разными, и важно определить свою, прежде чем применять команды:
- 🔋 Прерванная установка — Termux был закрыт или устройство ушло в сон во время распаковки пакета.
- 💾 Нехватка свободного места во внутренней памяти устройства — dpkg не смог записать файлы.
- 📦 Повреждённый скачанный .deb-файл из-за обрыва соединения с репозиторием.
- 🔀 Конфликт версий: пакет требует зависимости, которые не совместимы с уже установленными.
- ⚙️ Устаревшие зеркала репозиториев, отдающие несогласованные версии пакетов.
⚠️ Внимание: не удаляйте вручную файлы из каталога $PREFIX/var/lib/dpkg, если не понимаете их назначения. База данных dpkg хранит состояние всех установленных пакетов, и её повреждение превратит локальную ошибку в полностью нерабочее окружение.
Шаг 1. Завершите прерванную настройку пакетов
Первое действие при коде ошибки 1 — попросить dpkg самостоятельно довести до конца прерванные операции. Для этого существует штатная команда:
dpkg --configure -a
Эта команда проходит по всем пакетам в состоянии «half-configured» или «half-installed» и повторно запускает их скрипты настройки. Если причина была разовой — например, скрипт не успел отработать до закрытия Termux, — ошибка исчезает уже на этом этапе. Выполнение может занять от нескольких секунд до пары минут в зависимости от количества «зависших» пакетов.
Если команда выдала новые сообщения об ошибках, внимательно прочитайте их: в выводе обычно указано имя конкретного пакета, который не удаётся настроить. Запомните или запишите это имя — оно понадобится на следующих шагах. Именно строка с именем проблемного пакета, а не сам «error code 1», содержит ключ к решению.
Шаг 2. Исправьте сломанные зависимости через apt
Если настройка вручную не помогла, переходите к инструменту более высокого уровня. Команда apt умеет анализировать дерево зависимостей и автоматически доустанавливать или удалять пакеты, чтобы вернуть систему в согласованное состояние:
apt --fix-broken install
Вам будет показан список изменений, которые apt предлагает внести: что доустановить, что обновить, а что — удалить. Прочитайте этот список перед подтверждением. Если apt собирается удалить десятки пакетов, включая нужные вам инструменты, лучше отказаться и сначала разобраться с конкретным конфликтующим пакетом.
После успешного завершения имеет смысл обновить индексы и повторить изначальную операцию:
apt update && apt upgrade
Шаг 3. Очистите кэш и проверьте свободное место
Нехватка памяти — одна из самых частых скрытых причин сбоя dpkg. Проверьте состояние хранилища командой df -h $PREFIX и посмотрите на объём доступного пространства. Если свободно совсем мало, dpkg физически не может распаковать файлы пакета и честно сообщает об этом через код ошибки.
Освободить место помогает очистка кэша загруженных пакетов и удаление ненужных зависимостей:
apt clean
apt autoremove
Первая команда удаляет скачанные .deb-архивы из кэша, вторая — пакеты, которые были установлены как зависимости, но больше ничем не используются. Дополнительно стоит проверить общее хранилище Android: если системный раздел переполнен, очистки внутри Termux может оказаться недостаточно.
Шаг 4. Удалите проблемный пакет принудительно
Бывают ситуации, когда один конкретный пакет настолько повреждён, что ни --configure, ни --fix-broken не справляются: его скрипт настройки падает при каждом запуске. В этом случае пакет можно удалить принудительно, минуя его скрипты:
dpkg --remove --force-remove-reinstreq имя_пакета
Подставьте вместо имя_пакета название из сообщения об ошибке. После удаления выполните apt --fix-broken install ещё раз, чтобы система привела зависимости в порядок, а затем при необходимости установите пакет заново командой apt install имя_пакета — свежая копия будет скачана из репозитория.
⚠️ Внимание: принудительное удаление — обратимая, но небезопасная операция, если речь идёт о системных компонентах Termux (например, самом dpkg, apt или bash). Удаление таких пакетов может сделать окружение неработоспособным. Если проблемный пакет относится к базовой системе, надёжнее перейти к переустановке Termux с сохранением данных.
☑️ Порядок действий при dpkg error code 1
Шаг 5. Смените зеркало репозитория
Иногда источник проблемы находится вне устройства: зеркало репозитория отдаёт устаревшие или несогласованные версии пакетов, из-за чего зависимости не сходятся. В Termux предусмотрен штатный инструмент смены зеркала:
termux-change-repo
Команда открывает интерактивное меню, где можно выбрать другое зеркало из списка. После смены обязательно выполните apt update, чтобы индексы пакетов перезагрузились с нового источника. Затем повторите установку или обновление, которое завершалось ошибкой.
Если вы давно не обновляли само приложение Termux, проверьте его источник: сборки из Google Play давно не обновляются и используют устаревшие репозитории, что само по себе является частой причиной конфликтов пакетов. Актуальные версии распространяются через F-Droid и GitHub-репозиторий проекта — сверьтесь с официальной документацией Termux, чтобы выбрать корректный источник установки.
Почему Termux из Google Play вызывает ошибки пакетов
Сборка Termux в Google Play долгое время не обновлялась и ссылается на репозитории, которые больше не поддерживаются. Пакеты оттуда конфликтуют с актуальными версиями, что приводит к ошибкам dpkg. Рекомендуемый источник установки — F-Droid или официальный репозиторий проекта на GitHub. Перед переустановкой сохраните данные командой termux-setup-storage и копированием нужных файлов из домашнего каталога.
Сравнение способов решения
Чтобы выбрать подходящий метод, ориентируйтесь на таблицу ниже. Начинайте всегда с первого пункта и двигайтесь вниз только если предыдущий шаг не помог.
| Способ | Когда применять | Риск для данных |
|---|---|---|
dpkg --configure -a | Первая реакция на любую ошибку dpkg | Отсутствует |
apt --fix-broken install | Конфликт зависимостей, недоустановленные пакеты | Минимальный, читайте список изменений |
apt clean + освобождение памяти | Ошибки записи файлов, нехватка места | Отсутствует |
| Принудительное удаление пакета | Падает скрипт настройки конкретного пакета | Средний для системных пакетов |
| Переустановка Termux | Ничего не помогло, база dpkg повреждена | Полная потеря окружения без бэкапа |
Когда остаётся только переустановка
Если база данных dpkg повреждена настолько, что ни одна команда не выполняется, радикальным, но надёжным решением будет полная переустановка Termux. Перед этим сохраните важные файлы: домашний каталог $HOME можно скопировать в общее хранилище, предварительно выдав приложению доступ командой termux-setup-storage.
После переустановки восстановите файлы и ставьте пакеты заново. Чтобы не повторять настройку вручную, полезно заранее сохранить список установленных пакетов командой dpkg --get-selections в файл — потом по нему легко восстановить всё окружение одной командой.
Частые вопросы
Что означает error code 1 в dpkg?
Код 1 — общий сигнал о том, что один из этапов установки или настройки пакета завершился неудачно. Конкретную причину нужно искать в строках выше: там указано имя пакета и текст ошибки его скрипта.
Можно ли исправить ошибку без потери установленных пакетов?
Да. Команды dpkg --configure -a и apt --fix-broken install не удаляют ваши данные и программы — они лишь завершают прерванные операции и чинят зависимости. Потеря данных возможна только при принудительном удалении пакета или переустановке Termux.
Ошибка появляется при каждой команде apt, что делать?
Это признак того, что в системе есть полунастроенный пакет, блокирующий все операции. Выполните dpkg --configure -a, найдите имя проблемного пакета в выводе и при необходимости удалите его принудительно, как описано в четвёртом шаге.
Поможет ли очистка данных Termux в настройках Android?
Очистка данных равнозначна полной переустановке: окружение, пакеты и файлы в домашнем каталоге будут удалены. Это крайняя мера — сначала пройдите все шаги из статьи и сохраните важные файлы через termux-setup-storage.
Почему ошибка возникает сразу после установки Termux?
Вероятная причина — устаревшая сборка приложения из Google Play, которая обращается к неподдерживаемым репозиториям. Установите актуальную версию Termux из F-Droid или с официальной страницы проекта, затем выполните apt update && apt upgrade.