Rationale

Packages are an easy and convenient way to install software compared to compiling it.

All you have to worry about, after installing a package, is to make sure your system is up to date and there is no need to worry about each individual piece of software anymore. Today's distributions often even check automatically and notify if updates are available.

Another reason is that most Linux distributions often have old versions of Aircrack-ng in their repository and sometimes are a few years old.

It can be a problem for us when providing support. We often end up telling people to uninstall and recompile the latest release or try the current development code where the bug they're experiencing is fixed.

If you're a software developer, it's not too hard to figure out how to compile a piece of software, as long as the software is current and is documented. However, in some cases, it can get complicated.
And if you're not a developer, it is a daunting task.

We recently decided to tackle this issue and
provide recent versions via packages, and for multiple OSs.

Why not a snap or a flatpak?

There are more than just those two possibilities as you can see in this post and all of those software are still not widely adopted yet. We may, in the future, offer snaps or flatpaks.

Buildbots

For CI/CD,
we have been using buildbots on top of Travis CI and AppVeyor to
automatically build Aircrack-ng on multiple platforms and multiple
distros. It happens to every commit done to the master branch in our
GitHub repository

We recently added a packages building bot to the buildbots for all the distributions mentioned on top.

Building packages and dependencies

Creating packages for that many distributions is not easy and if we did it the same way package
managers do, we would have to keep spending a considerable amount of time and resources. So, the decision was made that the best route was to statically compile latest version of the
dependencies into Aircrack-ng.

Basically, all the dependencies needed for each binary are built into each of them and what that means practically is that you can take the executable and just copy and paste it on another distro, no matter what packages are installed on that distro and how old or outdated it is, it would just work.

It wasn't an easy feat.

There is a drawback, the binaries are larger than if they were coming from the distribution itself (or if you were compiling them yourself with the default options), because they are dynamically linked to its dependencies, which are sometimes shared with other software.

There is also a huge advantage. As mentioned above, we can support multiple OS and multiple versions of each of these OS easily and as a bonus, you will always have the latest version of the dependencies which are, most of the time, newer than what your distribution is providing. Added bonus: it sometimes fix bugs found in the library available in the distro.

Repositories

Maintaining repositories to distribute the packages was another
issue, we could have gotten an Ubuntu PPA repository, our own repository
for Debian, the different derivatives of SuSe and RedHat but
maintaining repositories for different distributions is a time and
resources consuming task. So, we went with PackageCloud.io to handle it.

They
provides instructions on how to add each of the repositories, either
manually or automatically via their script. Afterward, it is just a
matter of installing or updating Aircrack-ng via your package manager.

As mentioned, two flavors are available:

release: Any release published on our website, starting from this release, 1.4

git: for the most adventurous, built from each commit in our GitHub repository, with the latest features and bug fixes. While our repository is fairly stable, it may sometimes have bugs

Providing packages also means our package is a drop-in replacement for
the existing Aircrack-ng package available from your distro and it will still be
working with any package that requires it as a dependency.

Windows

Windows doesn't have any package manager we can leverage. Development
binaries for Windows, built from our GitHub repository, are available on
AppVeyor. On that link, select the last target, pkg, then click on the Artifacts tab.

Sauce

To make our life easier so we can focus on the development, it is, like all the CI/CD, automated thanks to our buildbots. The magic sauce is in packages.yaml in build/pipelines.

Finally

If your distribution is providing an up to date
package of Aircrack-ng, we recommend to use it instead of our
packages. That is, unless you are using the git packages.

If
your distribution isn't in the list of supported ones but uses DEB or
RPM packages, you can try overriding the distribution in PackageCloud
installation script