We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Создание автономной системы автоматической генерации и установки пакетов Android в Termux

Подробное руководство по построению автономной системы в Termux для генерации, размещения и автоматической установки Android‑пакетов (deb).

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

Требования

  • Устройство с Android 8.0 и выше.
  • Установленное приложение Termux из Google Play или F-Droid.
  • Доступ к сети Wi‑Fi (для раздачи репозитория).
  • Базовые навыки работы в терминале Linux.

Установка Termux и базовых инструментов

После установки Termux обновите пакеты и установите необходимые утилиты:

pkg update && pkg upgrade -y
pkg install git python clang make dpkg-dev -y

Для генерации пакетов понадобится dpkg-deb, который входит в пакет dpkg-dev.

Создание структуры пакета

Стандартная структура .deb-пакета выглядит так:

myapp_
├── DEBIAN
│   └── control
└── usr
    └── bin
        └── myapp

Создадим шаблон скриптом:

mkdir -p ~/pkg_template/DEBIAN
mkdir -p ~/pkg_template/usr/bin
cat > ~/pkg_template/DEBIAN/control <<'EOF'
Package: myapp
Version: 1.0.0
Section: utils
Priority: optional
Architecture: all
Maintainer: Your Name 
Description: Пример автономного пакета
EOF
chmod 755 ~/pkg_template/usr/bin
cat > ~/pkg_template/usr/bin/myapp <<'EOF'
#!/data/data/com.termux/files/usr/bin/bash
echo "Hello from myapp!"
EOF
chmod 755 ~/pkg_template/usr/bin/myapp

После этого можно собрать пакет:

dpkg-deb --build ~/pkg_template myapp_1.0.0_all.deb

Автоматическая генерация пакетов

Для масштабирования создадим скрипт build_pkg.sh, который будет принимать название, версию и путь к исполняемому файлу, генерировать структуру и упаковывать её:

cat > ~/build_pkg.sh <<'EOF'
#!/usr/bin/env bash
set -e
NAME=$1
VERSION=$2
BIN_PATH=$3
TARGET_DIR="${NAME}_pkg"
mkdir -p "$TARGET_DIR/DEBIAN"
mkdir -p "$TARGET_DIR/usr/bin"
# control file
echo "Package: $NAME" > "$TARGET_DIR/DEBIAN/control"
echo "Version: $VERSION" >> "$TARGET_DIR/DEBIAN/control"
echo "Section: utils" >> "$TARGET_DIR/DEBIAN/control"
echo "Priority: optional" >> "$TARGET_DIR/DEBIAN/control"
echo "Architecture: all" >> "$TARGET_DIR/DEBIAN/control"
echo "Maintainer: Auto Builder " >> "$TARGET_DIR/DEBIAN/control"
echo "Description: Автоматически сгенерированный пакет $NAME" >> "$TARGET_DIR/DEBIAN/control"
# copy binary
cp "$BIN_PATH" "$TARGET_DIR/usr/bin/$NAME"
chmod 755 "$TARGET_DIR/usr/bin/$NAME"
# build deb
dpkg-deb --build "$TARGET_DIR" "${NAME}_${VERSION}_all.deb"
# cleanup
rm -rf "$TARGET_DIR"
EOF
chmod +x ~/build_pkg.sh

Пример использования:

~/build_pkg.sh mytool 2.3.1 /data/data/com.termux/files/home/scripts/mytool.sh

Настройка локального репозитория

Для распространения пакетов удобно создать простой HTTP‑репозиторий. Сначала создадим каталог repo и поместим туда все .deb-файлы:

mkdir -p ~/repo
mv .deb ~/repo/

Сгенерируем файлы индексов с помощью dpkg-scanpackages:

cd ~/repo
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

Запустим простой веб‑сервер (Python уже установлен):

cd ~/repo
python -m http.server 8080 &

Теперь репозиторий доступен по адресу http://IP_устройства:8080.

Автоматическая установка пакетов

Для подключения к нашему репозиторию используем стандартный механизм apt в Termux. Добавим файл источника:

echo "deb [trusted=yes] http://$(hostname -I | awk '{print $1}'):8080 ./" > $PREFIX/etc/apt/sources.list.d/localrepo.list

Обновим кэши и установим нужный пакет:

apt update
apt install myapp

Для полной автоматизации создадим скрипт auto_install.sh, который будет проверять наличие обновлений и выполнять установку:

cat > ~/auto_install.sh <<'EOF'
#!/usr/bin/env bash
set -e
REPO_URL="http://$(hostname -I | awk '{print $1}'):8080"
# add repo if not present
if ! grep -q "$REPO_URL" $PREFIX/etc/apt/sources.list.d/localrepo.list 2>/dev/null; then
  echo "deb [trusted=yes] $REPO_URL ./" > $PREFIX/etc/apt/sources.list.d/localrepo.list
fi
apt update
# список пакетов, которые нужно держать в актуальном состоянии
PACKAGES=(myapp mytool)
for pkg in "${PACKAGES[@]}"; do
  if apt list --upgradable 2>/dev/null | grep -q "^$pkg/"; then
    echo "Обновляем $pkg..."
    apt install -y $pkg
  else
    echo "$pkg уже актуален"
  fi
done
EOF
chmod +x ~/auto_install.sh

Запускать скрипт можно вручную или добавить в crontab (Termux поддерживает crontab через пакет cronie):

pkg install cronie -y
crontab -e
# Добавьте строку, например, каждый день в 3:00
0 3    ~/auto_install.sh

Тестирование и отладка

Проверьте доступность репозитория с другого Android‑устройства, установив Termux и выполнив:

apt update && apt install myapp

Если пакет не находится, проверьте:

  • Корректность IP‑адреса и порта.
  • Наличие файла Packages.gz в корне репозитория.
  • Что в sources.list.d указана опция trusted=yes (для локального теста).

Заключение

Мы создали полностью автономную систему, способную генерировать .deb-пакеты, размещать их в локальном HTTP‑репозитории и автоматически устанавливать/обновлять их на Android‑устройствах через Termux. Такая инфраструктура упрощает доставку собственных утилит, скриптов и сервисов в корпоративных и образовательных проектах.

Для профессионального внедрения, поддержки и расширения подобных решений в Рыбинске обращайтесь в RybinskLab – ваш надёжный партнёр в сфере IT‑услуг.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект