Termux – мощный эмулятор терминала для Android, предоставляющий полноценную Linux‑среду. Официальные репозитории покрывают большинство потребностей, однако иногда требуется собственный набор пакетов, оптимизированных под конкретные задачи или архитектуры (ARM‑64, x86_64). В этой статье мы рассмотрим процесс создания кастомного репозитория, его публикацию и подключение к Termux.
Подготовка окружения
Для работы понадобится рабочая машина под Linux (например, Ubuntu 22.04) и установленный Termux на Android‑устройстве.
sudo apt update && sudo apt install -y git curl gnupg python3 python3-pip
Установим инструменты сборки пакетов Termux:
pip3 install -U termux-packages
Создание структуры репозитория
Репозиторий состоит из нескольких каталогов:
packages– исходные файлы пакетов.repo– готовые.debфайлы и метаданные.
Создадим рабочий каталог и перейдём в него:
mkdir -p ~/termux-repo/{packages,repo}
cd ~/termux-repo
Сборка пакета под нужные архитектуры
Для примера соберём простой скрипт hello. Создадим файл hello.sh в каталоге packages:
cat > packages/hello.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
echo "Hello from custom repo!"
EOF
chmod +x packages/hello.sh
Создадим файл build.sh, который упакует скрипт в .deb для обеих архитектур:
cat > build.sh <<'EOF'
#!/usr/bin/env bash
set -e
PKGNAME=hello
VERSION=1.0
ARCHS=(aarch64 x86_64)
for ARCH in "${ARCHS[@]}"; do
mkdir -p repo/${ARCH}/usr/bin
cp packages/hello.sh repo/${ARCH}/usr/bin/${PKGNAME}
dpkg-deb --build repo/${ARCH} repo/${PKGNAME}_${VERSION}_${ARCH}.deb
done
EOF
chmod +x build.sh
Запустим сборку:
./build.sh
Генерация метаданных репозитория
Для того чтобы Termux мог использовать репозиторий, необходимо создать файл Packages и его подпись. Установим утилиту apt-ftparchive:
sudo apt install -y apt-utils
Сгенерируем Packages для каждой архитектуры:
for ARCH in aarch64 x86_64; do
apt-ftparchive packages repo/${PKGNAME}_${VERSION}_${ARCH}.deb > repo/${ARCH}/Packages
gzip -c9 repo/${ARCH}/Packages > repo/${ARCH}/Packages.gz
done
Подпишем репозиторий GPG‑ключом (можно использовать уже существующий ключ или создать новый):
gpg --quick-generate-key "RybinskLab " default default never
KEYID=$(gpg --list-keys --with-colons | grep '^pub' | cut -d: -f5)
for ARCH in aarch64 x86_64; do
gpg --default-key $KEYID --output repo/${ARCH}/Release.gpg --detach-sign repo/${ARCH}/Release
gpg --default-key $KEYID --output repo/${ARCH}/InRelease --clearsign repo/${ARCH}/Release
done
Размещение репозитория в сети
Самый простой способ – разместить готовую структуру на статическом хостинге (GitHub Pages, Netlify, ваш собственный веб‑сервер). Предположим, что репозиторий будет доступен по адресу https://example.com/termux-repo. Загрузим каталог repo туда, сохранив вложенную структуру aarch64 и x86_64.
Подключение репозитория в Termux
На Android‑устройстве откроем Termux и добавим новый источник в файл $PREFIX/etc/apt/sources.list.d/custom.list:
echo "deb https://example.com/termux-repo aarch64 main" > $PREFIX/etc/apt/sources.list.d/custom.list
echo "deb https://example.com/termux-repo x86_64 main" >> $PREFIX/etc/apt/sources.list.d/custom.list
Обновим индексы и установим наш пакет:
apt update
apt install hello
Проверим работу:
hello
Отладка и типичные проблемы
- Неправильная архитектура. Убедитесь, что в имени пакета указана корректная архитектура (
aarch64для ARM‑64,x86_64для 64‑разрядных процессоров). - Отсутствие подписи. Termux требует подписанный
Release. Проверьте наличие файловRelease.gpgиInRelease. - Кеш APT. После изменения репозитория выполните
apt clean && apt update.
Заключение
Создание собственного репозитория пакетов для Termux позволяет гибко управлять набором программ, адаптировать их под нужные архитектуры и поддерживать обновления в автономных или ограниченных сетевых средах. Следуя описанным шагам, вы сможете быстро собрать, подписать и разместить пакеты для ARM‑64 и x86_64, а затем без проблем использовать их в Termux.
Если вам требуется профессиональная поддержка в построении инфраструктуры CI/CD, настройке безопасных репозиториев или разработке кастомных пакетов под Android, обращайтесь в RybinskLab. Мы предоставляем услуги по консалтингу, автоматизации сборок и сопровождению проектов на базе Linux и Termux.