Termux предоставляет мощную Linux‑подобную среду на Android‑устройствах. Стандартный набор пакетов покрывает большинство задач, однако иногда требуется собрать собственный инструмент, написанный на C/C++ (с использованием CMake) или на Rust. В этой статье мы разберём процесс создания пользовательского пакета, который можно установить через pkg или apt в Termux.
Что понадобится
- Установленный Termux (последняя версия из Google Play или F-Droid).
- Базовые инструменты разработки:
git,clang,make,cmake. - Rust‑toolchain для Android:
rustup, цельaarch64-linux-android(или нужная архитектура). - Пакет
termux-tools(включаетtermux-create-package).
Установка необходимых зависимостей
pkg update && pkg upgrade -y
pkg install -y git clang make cmake rust wget tar proot
rustup target add aarch64-linux-android
Эти команды подготовят окружение как для C/C++ проектов, так и для Rust.
Сборка проекта на C/C++ с CMake
Рассмотрим пример простого «Hello World», который собирается через CMake.
# Клонируем репозиторий
git clone https://github.com/example/termux-cmake-demo.git
cd termux-cmake-demo
# Создаём директорию сборки и собираем
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX
make -j$(nproc)
make install
После установки бинарник появится в $PREFIX/bin, где $PREFIX обычно равен /data/data/com.termux/files/usr.
Сборка проекта на Rust
Создадим простой CLI‑инструмент на Rust.
# Создаём новый проект
cargo new --bin termux-rust-demo
cd termux-rust-demo
# Указываем таргет для Android
rustup target add aarch64-linux-android
# Сборка для целевой архитектуры
cargo build --release --target aarch64-linux-android
# Копируем готовый бинарник в $PREFIX/bin
cp target/aarch64-linux-android/release/termux-rust-demo $PREFIX/bin/
chmod +x $PREFIX/bin/termux-rust-demo
Бинарник готов к использованию, но пока он не упакован в виде пакета .deb.
Создание пакета Debian для Termux
Termux использует собственный набор скриптов (пакет termux-create-package) для генерации .deb. Ниже показан общий шаблон.
# Создаём рабочую директорию
mkdir -p ~/my_pkg/src && cd ~/my_pkg
# Скачиваем исходный код (пример для CMake‑проекта)
git clone https://github.com/example/termux-cmake-demo.git src
# Пишем файл build.sh
cat > build.sh <<'EOF'
#!/usr/bin/env bash
set -e
# Путь к каталогу сборки
BUILD_DIR=$PWD/build
mkdir -p $BUILD_DIR && cd $BUILD_DIR
# CMake конфигурация
cmake $SRC_DIR -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX
make -j$(nproc)
make install DESTDIR=$PWD/package
EOF
chmod +x build.sh
# Описание пакета (control)
mkdir -p deb
cat > deb/control <<'EOF'
Package: termux-cmake-demo
Version: 1.0.0
Architecture: aarch64
Maintainer: Your Name
Description: Демонстрационный пакет, собранный с помощью CMake в Termux.
Depends: libc6, libstdc++6
EOF
# Создаём пакет
termux-create-package
Команда termux-create-package автоматически упакует содержимое package в .deb, который можно установить через dpkg -i или разместить в собственном репозитории.
Пакет для Rust‑проекта
Для Rust процесс аналогичен, только в build.sh вместо CMake вызывается cargo.
cat > build.sh <<'EOF'
#!/usr/bin/env bash
set -e
# Сборка Rust‑бинарника
cargo build --release --target aarch64-linux-android
# Установка в staging‑директорию
mkdir -p package$PREFIX/bin
cp target/aarch64-linux-android/release/termux-rust-demo package$PREFIX/bin/
chmod +x package$PREFIX/bin/termux-rust-demo
EOF
chmod +x build.sh
# Остальная часть (deb/control) остаётся такой же, только меняем Package и Description.
termux-create-package
Полученный .deb можно распространять через собственный репозиторий или разместить в GitHub Releases.
Тестирование и публикация
- Установите пакет локально:
dpkg -i termux-cmake-demo_1.0.0_aarch64.deb. - Проверьте работу команды:
termux-cmake-demo(должно вывести «Hello, Termux!»). - Для публичного репозитория создайте
Packagesфайл и подпишите его с помощьюapt-ftparchiveиgpg.
Заключение
Создание пользовательских пакетов для Termux с помощью CMake и Rust открывает широкие возможности для разработки нативных Android‑утилит без необходимости писать Java/Kotlin. Вы получили полное представление о подготовке окружения, сборке кода и упаковке в формат .deb, совместимый с менеджером пакетов Termux.
Если вы хотите ускорить процесс разработки, получить профессиональную поддержку по кастомизации пакетов или настроить собственный репозиторий, обратитесь к услугам RybinskLab. Мы поможем вам автоматизировать сборку, обеспечить безопасность и поддерживать актуальность ваших Termux‑пакетов.