Build native Linux packages and host your own repository

Linux had package repositories long before app stores existed. But shipping your own software for Linux is still hard.

OmniPackage builds RPM, DEB, and pacman packages for many Linux distros and uploads them to your own repository. The repository lives in an S3 bucket or a local directory. Run it on your laptop or in CI.

zsh
$ omnipackage release ~/projects/my-awesome-project
  building     ubuntu_26.04 debian_13 fedora_44 opensuse_16.0 arch ...
✓ signed       with your GPG key
✓ published    s3://your-bucket
✓ install page ready to share with users
$ 

License: GPL-3.0 CI status Available in the OmniPackage stable repository Available in the OmniPackage stable aarch64 repository

How it works

  1. 01Set up

    Run omnipackage init. It creates the files needed to build RPM, DEB, and pacman packages.

  2. 02Release

    Run omnipackage release. It builds each package in a container with the target distro, so the package uses that distro's own libraries. Then it signs the packages with your GPG key and uploads them to your repository.

  3. 03Share

    Send users the install page. They add your repository once, then install and update your software with their usual package manager.

What your users do

On Ubuntu, users run these commands once:

user@ubuntu:~
echo 'deb https://repositories.omnipackage.org/omnipackage-rs/stable/ubuntu_26.04 stable/' | sudo tee /etc/apt/sources.list.d/omnipackage_omnipackage.list
curl -fsSL https://repositories.omnipackage.org/omnipackage-rs/stable/ubuntu_26.04/stable/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/omnipackage_omnipackage.gpg > /dev/null
sudo apt-get update
sudo apt-get install omnipackage

After that, they get updates with apt upgrade, like any other package. It works the same way on Debian, Fedora, openSUSE, Arch, and the other supported distros.

Supported distros

Loading the distro list...

The list is loaded from distros.yml in the OmniPackage repository.

No lock-in

What OmniPackage does not do

Projects using OmniPackage

FAQ

Do I need Docker?

No. OmniPackage works with Podman or Docker. If both are installed, it uses Podman. To choose one, use the --container-runtime option.

Can I distribute closed-source software?

Yes. Your repository can store any packages, including closed-source ones.

How is OmniPackage different from Snap, Flatpak, or AppImage?

Snap and Flatpak use their own runtimes. AppImage puts all dependencies into one file. OmniPackage builds regular distro packages, so users install and update them with apt, dnf, zypper, or pacman.

Which CPU architectures are supported?

OmniPackage builds for the CPU architecture of the machine it runs on, x86_64 or ARM64. Most distro images support both. Arch Linux supports only x86_64, and Manjaro no longer updates its ARM repositories.

Can I host the repository on AWS S3, Cloudflare R2, or MinIO?

Yes. Any S3-compatible storage works, and so does a local directory. We recommend Cloudflare R2 because it is the most tested and has no fees for download traffic.

Is OmniPackage free?

Yes. It is free and open source under the GPL-3.0 license.