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‑услуг.