Termux предоставляет полноценную Linux‑среду на Android‑устройствах, однако процесс сборки и установки пакетов может занимать значительное время, особенно при повторных запусках скриптов автоматизации. В статье рассматривается, как использовать кэширование apt-get для ускорения сборки, а также приводятся готовые шаблоны скриптов.
Почему кэширование играет ключевую роль
Каждый вызов apt-get install скачивает необходимые .deb‑файлы из удалённых репозиториев. При повторных установках эти файлы загружаются заново, что приводит к:
- Увеличению трафика и расходу мобильного интернета;
- Замедлению CI/CD‑конвейеров в Termux;
- Необходимости повторного скачивания одинаковых пакетов.
Решение – сохранять загруженные пакеты в локальном кэше и переиспользовать их.
Принцип работы кэша apt-get в Termux
По умолчанию apt хранит загруженные архивы в каталоге $PREFIX/var/cache/apt/archives. При удалении пакетов кэш очищается только при выполнении apt-get clean. Для автоматизации сборки достаточно гарантировать, что этот каталог сохраняется между запусками скриптов.
Настройка постоянного кэша
Самый простой способ – переместить кэш в директорию, которую вы явно сохраняете (например, ~/termux-cache) и создать символическую ссылку:
# Создаём отдельную папку для кэша
mkdir -p ~/termux-cache/apt-archives
# Удаляем старый кэш (если существует)
rm -rf $PREFIX/var/cache/apt/archives
# Создаём символическую ссылку
ln -s ~/termux-cache/apt-archives $PREFIX/var/cache/apt/archives
# Проверяем, что ссылка работает
ls -l $PREFIX/var/cache/apt/archives
Теперь любые скачанные пакеты будут сохраняться в ~/termux-cache/apt-archives и будут доступны после перезапуска Termux.
Пример скрипта автоматизации сборки
Ниже представлен минимальный скрипт, который:
- Обновляет списки пакетов;
- Устанавливает зависимости, используя кэш;
- Собирает исходный код проекта;
- Очищает временные файлы, но сохраняет кэш.
#!/usr/bin/env bash
set -euo pipefail
# 1. Обновляем индексы пакетов
apt-get update -y
# 2. Устанавливаем необходимые зависимости
# Список можно расширять под ваш проект
DEPS="git make clang python clang-tools-extra"
apt-get install -y $DEPS
# 3. Клонируем репозиторий (пример)
PROJECT_DIR="$HOME/myproject"
if [ ! -d "$PROJECT_DIR" ]; then
git clone https://github.com/example/myproject.git "$PROJECT_DIR"
fi
cd "$PROJECT_DIR"
# 4. Сборка проекта
make clean && make -j$(nproc)
# 5. Очистка временных файлов, кэш сохраняется
apt-get autoremove -y
echo "Сборка завершена успешно! Кэш находится в ~/termux-cache/apt-archives"
Скрипт можно добавить в ~/.profile или запускать через планировщик cron в Termux (пакет cronie).
Дополнительные трюки для ускорения
- Предзагрузка кэша. При создании образа (например, через
termux-create-package) включайте в него уже скачанные .deb‑файлы. - Локальный репозиторий. Можно собрать собственный репозиторий в
~/local-repoи добавить его в/etc/apt/sources.list.d:echo "deb [trusted=yes] file://$HOME/local-repo ." > $PREFIX/etc/apt/sources.list.d/local.list apt-get update - Параллельные загрузки. Установите переменную
Acquire::Queue-Mode "access";в/etc/apt/apt.conf.d/99parallelдля ускорения скачивания нескольких пакетов одновременно.
Заключение
Оптимизация скриптов сборки в Termux с помощью кэширования apt-get позволяет существенно сократить время установки зависимостей, экономить мобильный трафик и повышать стабильность автоматических конвейеров. Применяя описанные приёмы – перенос кэша в постоянную директорию, использование локального репозитория и небольшие настройки apt – вы получаете быстрый и предсказуемый процесс сборки.
Если вы хотите получить индивидуальное решение по автоматизации процессов в Termux, настроить CI/CD пайплайн под Android‑устройства или нуждаетесь в профессиональном сопровождении проектов, обращайтесь в RybinskLab. Мы помогаем оптимизировать рабочие процессы, разрабатывать кастомные скрипты и устранять узкие места в ваших системах.