KaOS Review [2019.10 Release] Review Supplement: Package Management

Nov. 29, 2019, 10 p.m.

KaOS is not the typical Arch based distribution in terms of package management. In fact the developers claim that it is not Arch based at all for reasons related to package management in the distribution. It does use pacman as its package manager, and Arch's tools to build packages, but the similarity to Arch based distributions there. In this article, a supplement to a review of KaOS's 2019.10 release, we discuss KaOS package management and some of features that distinguish it from Arch based distributions.

Introduction

The choice of Pacman and Arch tools for package building and package management is a large part of the strength of the distribution. As the developer states on the KaOS website:

KaOS has limited repositories, for many users the options available will be plenty. When that is not the case, one of the reasons why Pacman was chosen for package manager comes into play. It offers about the easiest solution available to build your own packages. KaOS Community Packages (KCP) was created so everyone can share the PKGBUILDs they created or adjusted for KaOS.

Pacman

KaOS uses Pacman as its package manager, but unlike Arch based distributions, it builds its packages from scratch using Arch developed tools and systems, i.e., running Arch's makepkg on a PKGBUILD file. It also uses its own repositories to distribute its official packages. Manjaro does this also, but unlike KaOS it uses Arch's PKGBUILDs and not its own.

The packages are grouped into three repositories:

Core
"... has the base packages needed for a system to boot-up, communicate with the BIOS, connect most hardware and set basic shell options ..."
Main
"... consists of all the needed libraries, extra drivers and firmware needed to make the Desktop and Applications function ..."
Apps
" ... consists of all packages seen and used by the users, including KDE (Frameworks, Plasma and Applications) and any needed tools. It is fully rolling and you can expect updates to reach this repository after a short testing period unless it needed to be built on newer versions of Core or Main packages, than it will have to wait until those are ready to come out of their testing period."
Build
All packages start in this repository. After a suitable amount of testing, they are moved to their respective repositories.

Just like Arch and and Arch based distributions, repositories are defined in pacman.conf. Unlike Arch and Arch based distributions that use Arch repositories, it appears that KaOS packages are not signed and doesn't make use of pacman's ability to verify signatures using a key store of official signing keys. It does use SHA256 checksum verification, however, but this doesn't insure package authenticity, only download integrity.

The pacman Configuration File

Some users may be amused by the Pac-Man eating candy progress indicator in the pacman output during package downloads, as shown in the following screenshot, enabled by the addition of I Love Candy in the configuration file.

pacman called by the KCP Helper Program to Install Dependencies
Pacman can be seen eating candy as the download indicator.
A complete Pacman Transaction
This series of screenshots shows the installation of kmail using pacman. Note that these screenshots were taken after the transaction completed, so the actual behavior of the download progress is not depicted, as it is in the above screenshot.
Click on any of the thumbnails to see a slideshow of the screenshots.

Octopi

KaOS includes, by default, the Octopi Qt based GUI front end to pacman. Octopi is fully integrated into the Plasma shell offering direct action from the system tray applet for some package management tasks. The first image in the following set of screenshots shows the panel applet, its menu options, and the window that opens when choosing the applet's System upgrade menu item. The rest of the images show the various menu items, dialogs, and the various screens when performing package management tasks on packages from the official repositories.

Octopi Is the Default GUI Package Manager
It provides a basic package management alternative to the pacman CLI package manager. It is also able to manage KCP packages by default.
Click on any of the thumbnails to see a slideshow of the screenshots.

As the AUR is optionally enabled in Arch, if the user configures this, or in some Arch based distributions, the KCP is enabled by default in the KaOS's Octopi. This feature works in the same way as with the AUR with the same annoying flaw in those implementations where, despite the UI, it is not possible to search the official repositories and the community/user repository at the same time.

KCP

KCP Portal

As the quotation from the KaOS site at the top of this article indicates, KaOS makes available to its community a repository for sharing PKGBUILDs, similar to the Arch User Repoitory. It also provides the KCP Portal, a way to browse available packages online. This is one of the standout features of KaOS. Unlike the AUR website, it is less technical, but it is a visually appealing design allowing easy discovery of available applications. The package detail modal window -- the fourth in the following set of screenshots shows this for the kvantum package -- features a Copy Command button which places the specific command to install the package into the clipboard. This can be pasted directly into a terminal to install the package. The detail window also shows the package metadata defined in the PKGBUILD, a link to the package's GitHub page, and a link to download a zip of the PKGBUILD.

The KaOS Community Packages Portal
The KCP portal offers easy discovery of available community packages.
Click on any of the thumbnails to see a slideshow of the screenshots.

KCP Command Line Interface

In the following set of images we see the KCP helper program in operation. The first image shows the command copied from the kvantum package detail page pasted in Konsole. The second through the seventh images shows the kcp CLI in operation installing kvantum. The eighth image shows its help output, and the last six images show searching for a package, showing more information on a package and installing a package, in this case, Microsoft Visual Studio Code. The eleventh image shows the PKGBUILD for vscode available on the KCP and the PKGBUILD of Arch's kvantum package form its official repositories.

The KCP Helper Program in Action
The KCP portal offers easy discovery of available community packages.
Click on any of the thumbnails to see a slideshow of the screenshots.

KCP Octopi Integration

In addition to managing KCP packages through the KCP CLI, users can manage KCP packages through the Octopi GUI. THe following set of images shows the process of searching for a package and installing a package, in this case searching for TexMaker but installing the closest available application TexStudio. Despite the thirteen minutes elapsed between the start of the installation and the password prompt, as it would seem judging by the clock in the panel the process of building the package did not take this long.

KCP Integration in Octopi

Click on any of the thumbnails to see a slideshow of the screenshots.

Flatpak

KaOS supports Flatpak packages. The KaOS documentation on Flatpak describes the Flatpak management.

Conclusion

The developer made a wise choice in choosing Pacman and Arch tools for package building and package management. It allows users all of the benefits of an Arch system in allowing users to easily learn and manage an important part of system as a result of the Arch design philosophy which results in a simple and transparent system. The distribution's implementation of a community repository is exemplary and deserves a lot of credit.