Define your system dependencies once in an Aptfile. Install, sync, and audit them with a single command — idempotently, every time.
$ curl -fsSL https://raw.githubusercontent.com/apt-bundle/apt-bundle/main/install.sh | sudo bash
$ sudo apt-bundle
One Aptfile. One command. Your packages, repos, and keys — all applied.
Everything you need to manage system dependencies without the complexity.
One Aptfile describes your entire system dependency set. Commit it to git and share it.
Safe to run repeatedly. Already-installed packages are skipped without error.
Add PPAs, custom apt repositories, and GPG keys — all from the same file.
Pin any package to a specific version with simple quoted syntax.
apt-bundle sync installs missing packages and removes ones no longer in the Aptfile.
Native action with built-in caching and lockfile support for reproducible CI builds.
Validate your Aptfile and environment before applying. Machine-friendly JSON output for CI.
Generate an Aptfile from your current system's installed packages in one command.
All subcommands at a glance. See full docs for flags and examples.
| Command | Description |
|---|---|
sudo apt-bundle |
Install all packages, repos, and keys from the Aptfile |
apt-bundle sync |
Install missing + remove packages no longer in the Aptfile |
apt-bundle check |
Exit 0 only if all Aptfile entries are satisfied; JSON flag for CI |
apt-bundle dump |
Print an Aptfile from currently-installed packages |
apt-bundle outdated |
List packages with available upgrades (exit 1 if any) |
apt-bundle doctor |
Validate the Aptfile and check environment prerequisites |
apt-bundle cleanup |
Remove packages tracked by apt-bundle but no longer in the Aptfile |
Idempotency is hard to get right. Repository and key management is error-prone. Scripts grow unmaintainable.
apt-bundle gives you a single declarative file and predictable behavior every time — no YAML, no DSL, no config management paradigm to learn. It works with your existing apt ecosystem, handles the fiddly bits, and gets out of your way.