Linux Package Manager Strategy

There are quite a few package managers available in Linux, and it’s hard to figure out which one to use for what. What I’m going to recommend here is my personal take after lots of back and forth, and trying new things.

Also, please bear in mind that I’m an Ubuntu user, and of course, other distributions have other possibilities, requirements, and best practices.

TL;DR:

In general I apply the following algorithm when looking for software to install in my laptop:

  1. If the app is a GUI app, use Flatpak.
  2. If the app is a command-line tool, use APT.
  3. If the tool is programming-language specific, just use the package manager of that language (pip install, gem install, npm install, etc)
  4. If the tool can be installed by curl | sh some script, first read the script, the use it to install it.
  5. If all else fails, download the AppImage.
  6. By all means, don’t use Snap.
  7. Forget about Homebrew.

Flatpak

I’ve started using Flatpak recently, and it works great for GUI applications. Most of the desktop apps I’m using (I’d say 95% of them) are installed with it. If you are looking for a simple way to get some piece of software on your Linux box, I’m sure it is already available in Flathub.

Another thing that I like about Flatpak is that it works in many different distributions.

The only app I did not install with Flatpak is Visual Studio Code, which is severely crippled when installed through Flathub. I did not find Shutter in it, either.

I also tried to install Microsoft Teams for Linux (don’t ask) but it simply does not work. Of course this is Microsoft’s fault, not Flatpak’s; so I just login with Chrome when I need it (which thankfully it’s not very often.)

Advanced Package Tool

The default APT (apt-get install) package manager is by far the best option to get software on your box.

Of course we all know that most of the packages available there are usually a bit outdated, but the truth is that you can add-apt-repository and get lots of help from the community.

Take for example the excellent Shutter screenshot tool; somebody came up with a suitable repository to get that great app back on your system.

Another tool that I installed with APT is Visual Studio Code, for which Flatpak is not a good option. I did the same for Emacs 27.

Other Options

There’s a lot more options available in Ubuntu to get software.

AppImage

Finally, there are plenty of great apps available using the AppImage format. In the rare cases where I cannot get an app through Flatpak or APT, I just download the AppImage to my ~/.local/bin folder, make it executable (chmod +x), and we’re done.

Update, 2022-03-22: If you use AppImage, try AppImageLauncher, a “helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages.”

Snap

Ubuntu users have this thing called Snap (snap install) to add applications. In general I have disliked using it, and this is mostly because of the sandbox thing. Applications are crippled in many subtle ways, and I stopped using it altogether.

Homebrew

Yes, Homebrew also works in Linux, but no, I don’t use it at all.