Ошибка «sub-process dpkg returned an error code (1)» в Termux: причины и решение

Ошибка 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
📊 На каком этапе у вас возникла ошибка dpkg error code 1?
При установке нового пакета
При обновлении (apt upgrade)
При первой настройке Termux
После прерывания установки

Шаг 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

Выполнено: 0 / 5

Шаг 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.