Before we can begin with making our own package we first need to know about the different packaging formats available to us on different platforms

Binary based formats

Binary based formats are ones that simply distribute a binary and some metadata in a single package. These binaries are then distributed on their respective distribution and downloaded by their users. Most package formats we support work like this:

  1. deb - For Debian and Ubuntu Linux based platforms
  2. rpm - For Fedora, RedHat and SUSE Linux based platforms
  3. flatpak - Runs on any Linux distribution using containerization
  4. pacman pkgbuild - For Arch Linux based distributions
  5. void templates - For Void Linux based distributions
  6. winget manifests - For Windows’ winget package manager

Among metadata such as the license of the application, these formats in most cases contain build instructions for the given application, which are used by the given distribution’s CI system to build them for distribution

Completely source based formats

Additionally there exist distributions like Gentoo and Funtoo Linux that have completely source based packaging formats. These 2 distributions use the Gentoo ebuild packaging formats, though they diverge in what features and versions of their package manager they use

Why the split

You might wonder why so many packaging formats are binary based and why there is only 1 source based format we support. Well actually, what we said before isn’t totally correct, because most of these packaging formats can be built from source, for example pkgbuilds and rpms, however in most cases this is done only on the distribution’s build servers

The split is mainly ideological, users of source based distributions prefer having the following features, not available on binary based systems:

  1. Software feature customization - You can directly disable features of applications by not compiling them in the first place, which makes your system follow the “pay for what you use” principle. This also provides additional hardening options and more
  2. You can install software that just isn’t available on binary based distributions, such as non-OpenSSL SLL libraries, other init systems, etc.
  3. You compile for your own hardware and can support additional optimizations