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

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

Реализация кастомного пакетного менеджера для Termux на основе dpkg и собственного репозитория

Подробный гайд по созданию собственного пакетного менеджера в Termux с использованием dpkg, собственного репозитория и скриптов автоматизации от RybinskLab.

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

Как отмечает Cambridge Dictionary, глагол start означает «начать, запустить» cambridge.org. В этой статье мы запускаем (start) процесс создания собственного пакетного менеджера, опираясь на dpkg – базовый инструмент управления .deb‑пакетами в Debian‑подобных системах.

Почему именно dpkg?

В Termux уже установлен dpkg, который отвечает за установку, удаление и проверку зависимостей .deb‑пакетов. Он полностью совместим с архитектурой ARM64, x86 и другими, что делает его надёжным фундаментом для кастомного решения.

Согласно Merriam‑Webster, start может означать «запустить процесс или действие» merriam-webster.com. Мы будем использовать эту семантику, создавая скрипт‑обёртку, который запускает (starts) типичные операции: install, remove, search, upgrade.

Шаг 1. Подготовка собственного репозитория

Структура репозитория должна соответствовать требованиям apt (который в Termux использует dpkg в качестве бэкенда). Минимальная структура:

myrepo/
├── dists/
│   └── stable/
│       ├── main/
│       │   └── binary-amd64/
│       └── Release
└── pool/
    └── main/
        └── p/
            └── package_1.0-1_arm64.deb

Где:

  • dists/ – метаданные дистрибутива.
  • pool/ – сами .deb‑файлы.

Шаг 2. Генерация файлов Packages и Packages.gz

Для каждой архитектуры необходимо собрать список пакетов:

cd myrepo/pool/main
find . -name ".deb" | while read pkg; do dpkg-deb -I "$pkg"; done > ../dists/stable/main/binary-arm64/Packages
gzip -c ../dists/stable/main/binary-arm64/Packages > ../dists/stable/main/binary-arm64/Packages.gz

Эти файлы позволяют apt понять, какие пакеты доступны, их версии и зависимости.

Шаг 3. Подпись репозитория (опционально)

Для повышения безопасности репозиторий можно подписать GPG‑ключом. Это позволит Termux проверять подлинность пакетов.

gpg --default-key YOUR_KEY_ID --output Release.gpg --clearsign Release

После этого в файле Release указываем хеши SHA256 для Packages и Packages.gz.

Шаг 4. Добавление репозитория в Termux

Создаём файл ~/.termux/apt/sources.list.d/custom.list со строкой:

deb [trusted=yes] file:///data/data/com.termux/files/home/myrepo dists/stable main

Параметр trusted=yes позволяет обойти проверку подписи, если вы не подписываете репозиторий.

Шаг 5. Скрипт‑обёртка «myapt»

Для упрощения работы создаём небольшую оболочку, которая будет «запускать» (start) типичные команды dpkg и apt:

#!/usr/bin/env bash
# myapt – простой менеджер пакетов для собственного репозитория

REPO_DIR="$HOME/myrepo"

function update_repo() {
    echo "Обновление метаданных репозитория..."
    cd "$REPO_DIR/pool/main"
    find . -name ".deb" | while read pkg; do dpkg-deb -I "$pkg"; done > "$REPO_DIR/dists/stable/main/binary-arm64/Packages"
    gzip -c "$REPO_DIR/dists/stable/main/binary-arm64/Packages" > "$REPO_DIR/dists/stable/main/binary-arm64/Packages.gz"
    echo "Готово."
}

function install_pkg() {
    local pkg="$1"
    if [[ -z "$pkg" ]]; then
        echo "Укажите имя пакета. Пример: myapt install mytool"
        exit 1
    fi
    apt-get install -y "$pkg"
}

function search_pkg() {
    local query="$1"
    apt-cache search "$query"
}

case "$1" in
    update) update_repo ;;
    install) shift; install_pkg "$@" ;;
    search) shift; search_pkg "$@" ;;
    *) echo "Usage: myapt {update|install|search} [args]" ;;
esac

Сделайте скрипт исполняемым и разместите в $HOME/.local/bin:

chmod +x myapt
mv myapt $HOME/.local/bin/

Шаг 6. Тестирование

Обновляем кэш:

myapt update

Ищем пакет:

myapt search mytool

Устанавливаем:

myapt install mytool

Если всё выполнено без ошибок, ваш кастомный менеджер готов к использованию.

Дополнительные возможности

  • Автоматическое построение репозитория из CI/CD (GitHub Actions, GitLab CI).
  • Поддержка нескольких дистрибутивов (stable, testing, nightly).
  • Интеграция с dictionary.com для автодокументации новых пакетов.
  • Создание собственного apt‑frontend с цветовым выводом (используя tput).

Заключение

Создание собственного пакетного менеджера в Termux – это отличный способ start (запустить) новые проекты, контролировать версии и обеспечивать безопасность собственного программного стека. Мы продемонстрировали, как собрать репозиторий, подписать его, добавить в Termux и написать удобную оболочку myapt, которая упрощает работу с пакетами.

Если вам нужен профессиональный аудит безопасности вашего репозитория, настройка CI/CD для автоматической генерации .deb‑файлов или обучение работе с Termux, обратитесь к RybinskLab. Мы предоставляем консалтинг, разработку кастомных репозиториев, поддержку DevOps‑процессов и обучение персонала. Свяжитесь с нами, и ваш проект получит надёжную и масштабируемую инфраструктуру уже сегодня.

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

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

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

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