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

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

Создание кастомных репозиториев пакетов для Termux с поддержкой ARM‑64 и x86_64

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.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю ИТ-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса. Запомните информация развлекательный ознакомительный носит, не нарушайте закон!

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