Pack is a multi-package-manager frontend for Linux — basically the Bedrock Linux idea, but for package managers.
Pack is experimental system software. Test it somewhere disposable before trusting it on an important machine.
DO NOT RUN AS ROOT!!!
Pack has been tested on Zorin OS Core, x86_64
Pack supports apt, dnf, flathub, pacman, pip, nix, apk, npm, snap, cargo, gem, and brew.
The host distro manager stays native. Foreign distro ecosystems (apt, dnf, pacman, apk) run in persistent Pack-managed Podman environments, so Fedora/Arch/Alpine/Debian packages don't overwrite the host's /usr or package database. Flatpak, Nix, and pip use their normal host ecosystem.
Clone the repo and run:
bash installer/install.shThe installer installs Pack and immediately starts pack setup.
pack setup
pack sync
pack managers
pack search fastfetch
pack install fastfetch
pack remove fastfetch
pack listDuring setup, choose managers by number or enter all. Pack tries the native package manager first when it needs a dependency, then other usable package managers. Foreign distro managers are provisioned as isolated environments. Setup finishes by syncing every manager that is ready.
pack install <package> searches every enabled ecosystem and asks which result to use. Pack syncs that ecosystem immediately before installation and streams the real package manager output.
On a Debian-family host, for example, apt remains native while dnf gets Fedora, pacman gets Arch Linux, and apk gets Alpine environments. Pack installs Podman through the native package manager when isolation is required and Podman is missing.
Pacman synchronization uses a full pacman -Syu rather than an unsupported partial-upgrade workflow.
Manager definitions live in pack/managers.py. Runtime isolation lives in pack/environments.py, while first-time provisioning/fallback logic lives in pack/bootstrap.py.