Most of the tools that you rely on will need to be installed somehow. These days there are multiple ways of installing and manage updates your applications on your OS of choice. From the three mentioned macOS seems to rely the most at the App Store to install a application. Especially in the open-source software landscape it is common that you need to install certain software dependencies alongside the application to run the software succesfully.
The longtime Linux users are certainly acquainted with the existance of the package managers like aptitude and yum. In this post I will summery some of the best known package managers in the landscape. In my opinion, the landscape is quite young and therefore develops a lot of.
Homebrew (macOS/Linux)
macOS users usually solve the problem with Homebrew. It is a command line based package manager for macOS to search, install and configure software packages and libraries through the command line. It simplifies the package installation by automatically finding and installing the dependencies when you are installing a package.
Be aware that anyone can create a .. The applications offered are not currated by a staff team so this is maybe not a proper option for enterprise.
I use this on my daily driver for work and school.
Chocolatey (Windows)
Chocolatey is a command line based package manager for Windows to search, install and configure Windows-software. It uses the official NuGet-packaging infrastructure from Microsoft and Windows Powershell for simplifing the downloading and installation of software.
Snapcraft (Linux)
Snapcraft which is often called Snap, is a Canonical-controlled system. Currently Ubuntu is using this by default. Canonical publishes Ubuntu, provides commercial services and solutions for Ubuntu and more. Snap works on other Linux distributions but not all. You can see Snap as a commercial product of Canonical but access if offered for free. Due to this fact you can see it as a walled garden and that is why you see that there is a lot of counter-pressure from the Linux world.
A walled garden has it advantages but also has it risks if you look at the ongoing lawsuit against the Apple App Store. It is tightly controlled and forces app creators to use only Apple’s own payment processor, which usually collects a 30% commission on app purchases.
Snap packages are maintained by their publisher Distro-agnostic <— makijken>
Disadvantages compared to Flatpak
- Performance hit on launch of applications
- Poor system integration
- High disk space usage
- Snapcraft uses Loopback devives impacts systeem boot time
- Compressed applications Advantages compared to Flatpak
- Currated offering which reduces the risk of malicious code
Flatpak (Linux/GNU)
Applications running under Flatpak are sandboxed, as a result the reach into the filesystem is limited. So for example application X can’t see your full filesystem which is a good thing because this feature will protect your system. In other cases this can be in the way. For example if you use want to point your music listen application to a directory at the filesystem but the sandbox is preventing this.
Flat packages are maintained by their publisher Distro-agnostic
Disadvantages compared to Flatpak
- Take up more disk space than Snaps Advantages compared to Flatpak
- Currated offering
- Generally speaking flatpack is better optimized and polished compared to Snapcraft (MIJN ERVARING)
- Applications running sandboxed
- Faster startup time
AppImage
But what about a cross-platform package manager
The problem with the solutions above is that they are not cross-platform. I recommend the use of the Nix package manager. It is a cross-platform package manager that can be used to install most of the software you use everyday. By “adopting” this package manager your future self is protected in the event you decide to jump ship from macOS to Linux vice-versa.
For a more detailed overview of the current software package management systems see this Wikipedia page. https://en.wikipedia.org/wiki/List_of_software_package_management_systems#Proprietary_software_systems
Which package managers are different linux distrubtions using by default?
Lets look at two distrubtions to see the differences. Ofcourse you are always free to install any package manager you want. Both distrubtions are user friendly.
Pop!_OS (Ubuntu derivative)
- Debian packages (
.debfiles) - Flatpacks (if software supports it)
Manjaro (Arch derivative)
- Official repository (
.pkgfiles) - Snapcraft (disabled by defaul)
- Flatpack (disabled by defaul)
- Arche User Repository AUR (community mainted repository, disabled by default)
A baby step in solving a fundamental issue
The package managers make installing applications easier but will fragment the ecosystem even more. [nog invoegen]In a video from 2014 Linus Torvalds highlichts the pain point of application distribution on Linux. According to him distros waste too much effort on package managent. It is a very instressting video where he highlights even more issues that are still present nowdays.