akg
Fast package manager for Termux written in Rust.
Compatible with the apt/dpkg package format and repository layout.
Features
- Parallel package downloads and unpacking
- Progress bars for install and remove/purge: speed, ETA, packages done, time of every phase
- Dependency resolution (Depends, Pre-Depends, Conflicts, Breaks, Provides, Replaces)
- Local
.debinstallation (file path or URL) - Custom repositories via
--repo(no need to editsources.list) - Repository signature check and SHA-256 verification of indexes and packages
- Maintainer scripts and dpkg-style triggers
- Auto-installed marks (apt-compatible)
- Atomic status database updates
- Dry-run and download-only modes
- Optional root via
AKG_ROOT
Installation
From crates.io
Make sure ~/.cargo/bin is in your PATH.
From source
Requirements: Rust toolchain, gpgv and termux-keyring (for repository signature verification).
Usage
akg [options] <command> [args]
akg -f <file.deb>
Commands
| Command | Aliases | Description |
|---|---|---|
update |
upd |
Refresh package index |
install |
i, add |
Install packages, local .deb files or .deb URLs |
reinstall |
rei |
Reinstall packages |
upgrade |
up, upg |
Upgrade all packages |
uninstall |
remove, rm |
Remove packages + unused dependencies |
purge |
Remove including config files | |
autoremove |
Remove unused dependencies | |
search |
se |
Search packages |
show |
sh, info |
Show package details |
files |
f |
List files of an installed package |
list-installed |
list-i |
List installed packages |
clean |
Delete cached .deb files |
Options
| Option | Description |
|---|---|
-y, --yes |
Assume yes |
-j, --jobs N |
Number of parallel downloads |
-f, --file PATH |
Install local .deb (path or URL), repeatable |
-r, --repo URL |
Use custom repository instead of sources.list, repeatable. A link to a .deb installs that file |
--suite NAME |
Repository suite (default: stable) |
--comp NAME |
Repository component (default: main) |
--no-verify |
Skip Release signature check (prints a warning) |
--download-only |
Only download .deb files |
--dry-run |
Show the plan without making changes |
--no-scripts |
Do not run maintainer scripts |
--no-triggers |
Do not run triggers |
--force-overwrite |
Allow overwriting files of other packages |
-V, --version |
Print version |
-h, --help |
Show help |
Options can also be written as --opt=value.
Examples
# Update index
# Install packages
# Install a specific version
# Install local .deb (no download, no dependency resolution, like dpkg -i)
# Use a custom mirror (https:// is added automatically)
# Custom repository with its own suite and component
# Only download packages
# Upgrade everything
# Remove package and unused dependencies
# Purge (remove + config files)
# Search
A local .deb is installed as-is. akg only warns if its dependencies are missing. The package architecture must match the device (or be all).
Progress output
When stderr is a terminal, akg shows:
- Install: download bar (percent, speed, ETA, packages done), extract bar, and one-line steps for Install / Configure / Trigger
- Remove / Purge: progress bar for Remove or Purge phase
At the end it prints the total time and the time of each phase:
akg: 5 package(s) processed in 12.4s
fetch 8.1s · unpack 1.2s · configure 2.4s · triggers 0.3s
akg: 3 package(s) processed in 1.8s
remove 1.8s
When output is not a terminal (pipe, log file), plain lines are printed instead of bars.
Environment
| Variable | Description |
|---|---|
PREFIX |
Termux prefix (default: /data/data/com.termux/files/usr) |
AKG_ROOT |
Optional root for testing (e.g. $HOME/fakeroot) |
AKG_ARCH |
Force architecture |
Test mode example:
AKG_ROOT=/fakeroot
Security
- The repository signature is required by default. If
gpgvor the trusted keys are missing, or the repository is not signed, akg stops with an error.--no-verifyturns the check off explicitly and prints a warning. When a repository setssigned-by, only those keys are used. - Package indexes are checked against the signed
Release, and every.debis checked against the SHA-256 from the index. A cached.debis reused only if its size and SHA-256 match. A package without a SHA-256 in the index is not installed. - Paths inside a package are validated before anything is written:
..is rejected and files can only be written inside$PREFIX.
Found a problem? Please open an issue.
Triggers
akg runs dpkg-style triggers declared in *.triggers files (interest / activate) after the packages are configured. Triggers raised by a script calling dpkg-trigger are not processed yet.
Building
Release profile uses fat LTO, single codegen unit and binary stripping.
License
MIT License. See LICENSE.
На русском
Быстрый пакетный менеджер для Termux, написанный на Rust.
Совместим с форматом пакетов и репозиториев apt/dpkg.
Возможности
- Параллельная загрузка и распаковка пакетов
- Прогресс-бары для установки и удаления/purge: скорость, оставшееся время, сколько пакетов готово, время каждого этапа
- Разрешение зависимостей (Depends, Pre-Depends, Conflicts, Breaks, Provides, Replaces)
- Установка локальных
.deb(путь или URL) - Свои репозитории через
--repo(достаточно адреса,sources.listправить не нужно) - Проверка подписи репозитория и SHA-256 индексов и пакетов
- Maintainer-скрипты и триггеры в стиле dpkg
- Метки auto-installed (совместимо с apt)
- Атомарные обновления базы status
- Режимы dry-run и download-only
- Тестовый root через
AKG_ROOT
Установка из crates.io
Убедись, что ~/.cargo/bin есть в PATH.
Установка из исходников
Нужен toolchain Rust, gpgv и termux-keyring (для проверки подписей репозиториев).
Основные команды
| Команда | Алиасы | Описание |
|---|---|---|
update |
upd |
Обновить индекс |
install |
i, add |
Установить пакеты, локальные .deb или ссылки на .deb |
reinstall |
rei |
Переустановить |
upgrade |
up, upg |
Обновить все пакеты |
uninstall |
remove, rm |
Удалить + неиспользуемые зависимости |
purge |
Удалить вместе с конфигами | |
autoremove |
Удалить неиспользуемые зависимости | |
search |
se |
Поиск пакетов |
show |
sh, info |
Информация о пакете |
files |
f |
Список файлов установленного пакета |
list-installed |
list-i |
Список установленных пакетов |
clean |
Очистить кэш .deb |
Опции
| Опция | Описание |
|---|---|
-y, --yes |
Отвечать «да» на вопросы |
-j, --jobs N |
Число параллельных загрузок |
-f, --file PATH |
Установить локальный .deb (путь или URL), можно несколько раз |
-r, --repo URL |
Использовать свой репозиторий вместо sources.list, можно несколько раз. Ссылка на .deb ставит этот файл |
--suite NAME |
Suite репозитория (по умолчанию stable) |
--comp NAME |
Компонент репозитория (по умолчанию main) |
--no-verify |
Не проверять подпись Release (с предупреждением) |
--download-only |
Только скачать .deb |
--dry-run |
Показать план без изменений |
--no-scripts |
Не запускать maintainer-скрипты |
--no-triggers |
Не запускать триггеры |
--force-overwrite |
Разрешить перезапись файлов других пакетов |
-V, --version |
Версия |
-h, --help |
Справка |
Опции можно писать и как --opt=value.
Примеры
Локальный .deb ставится как есть, без разрешения зависимостей. Если зависимостей не хватает, akg только предупредит. Архитектура пакета должна совпадать с устройством (или быть all).
Прогресс
Если вывод идёт в терминал, akg показывает:
- Установка: бар загрузки (проценты, скорость, ETA, сколько пакетов готово), бар распаковки и шаги Install / Configure / Trigger
- Удаление / purge: прогресс-бар фазы Remove или Purge
В конце печатается общее время и время каждого этапа. Если вывод не в терминал (пайп, лог), печатаются обычные строки.
Безопасность
- Подпись репозитория обязательна по умолчанию. Если нет
gpgvили ключей, либо репозиторий не подписан, akg останавливается с ошибкой.--no-verifyотключает проверку явно и печатает предупреждение. Если у репозитория заданsigned-by, используются только эти ключи. - Индексы проверяются по подписанному
Release, а каждый.debпо SHA-256 из индекса. Пакет из кэша используется только если совпали размер и SHA-256. Пакет без SHA-256 в индексе не устанавливается. - Пути внутри пакета проверяются до записи:
..отклоняется, писать можно только внутри$PREFIX.
Нашёл проблему? Открой issue.
Триггеры
akg запускает триггеры в стиле dpkg из файлов *.triggers (interest / activate) после настройки пакетов. Триггеры, которые скрипт вызывает через dpkg-trigger, пока не обрабатываются.
Переменные окружения
| Переменная | Описание |
|---|---|
PREFIX |
Префикс Termux (по умолчанию /data/data/com.termux/files/usr) |
AKG_ROOT |
Корневой каталог для тестов |
AKG_ARCH |
Принудительная архитектура |
Лицензия
MIT. См. LICENSE.