Table of Contents:
The Linux ecosystem is more grown and mature today than ever before. We have tons of Linux apps which are useful for users in all different categories and for all use cases.
However, the ways to download and install these Linux apps are not the same.
Each software application may have its own method of distributing its binary files so that its users can install it on their machines. And there are many ways to install an app on Linux.
Sources of Linux Apps
Today, we are going to talk about 7 of them, which are in a nutshell as follows:
- Official Linux distribution repositories.
- Official repositories of app developers.
- Unofficial community repositories.
- Flatpak packages: An appformat developed and supported by the community.
- Snap Packages: An appformat mainly developed and used by the Ubuntu distribution.
- AppImage Packages: Another appformat which is independent and works everywhere.
- Additional methods which are not recommended for most users.
Using these methods, you will be able to get any Linux app you want to install on your favourite Linux distribution.
1. Official Linux Distribution Repositories
The first and foremost source for getting apps on Linux is using your official Linux distribution repositories.
A “repository” is basically an online location where a set of apps (or packages as they are called) are hosted so that they can be downloaded and installed on user machines later on via package managers.
Each Linux distribution has its own set of repositories, which are different from one another. Some distributions like Ubuntu have a very large package repository registry (containing +60,000 packages as of this moment), while others like Slackware, for example, have much fewer than that.
Whatever the Linux distribution you use, the official repositories provided by that distribution are the most secure and most recommended method to get the apps you need on your system. Mainly for the following reasons:
- These repositories are audited and controlled by your distribution developers, so they are trusted enough as long as you trust your Linux distribution itself.
- These repositories will only contain packages compatible with your current Linux distribution version and release, so most often, they will not break your system if you install them due to incompatibility issues.
- Most of these repositories may be already enabled on your Linux system, which means that installing new apps is as easy as opening your software center application or running your package manager from the Linux command line.
If you open the software center in your Linux distribution (if it comes with one), then you will see whatever available apps that you can install from these repositories:
Alternatively, you can use your command line package manager to search and install Linux apps, such as by using the search command and the install command:
# Search for the VLC package using sudo apt search vlc # Install the VLC package directly. sudo apt install vlc
The package manager installed on your Linux system depends on what Linux distribution you are using. For example, for Debian, Ubuntu and Mint Linux distributions it is the
apt package manager, while for Fedora it is
You can learn what is your default package manager for your Linux distribution either from the documentation portal of your Linux distribution or from some other related source.
Additionally, you can use graphical package management programs like Synaptic (For Debian-based Linux distributions), to browse the contents of each enabled repository on your system and see what packages are available to install from them:
Also, you can search for packages by name online in the databases of your Linux distribution packages. For example, Ubuntu Packages and Fedora Packages are some online databases for this this purpose.
2. Official Repositories of App Developers
Sometimes app developers themselves may create their own repositories so that their users can directly install their software from them on their supported Linux distributions.
Anyone can create repositories of course, and not just Linux distribution developers.
An example of this case would be OBS (Open Broadcasting Software); they offer their own repository to install OBS on Ubuntu-based distributions.
If you see such cases in the wild, then this is also another authentic method from which you can install your favourite applications on your Linux distribution. You would still be using traditional package managers like
dnf, but the software will install easily at the end of the day.
Usually, you can discover whether the app developers offer a special repository compatible with your Linux distribution or not from the official downloads page of that app. If so, then you can follow their instructions on how to add it to your system and after that, you’ll be able to install the app on your Linux distro.
Keep in mind also that some applications, like OBS as well, are available in the official Linux distribution repositories for many distributions while also having their own repositories. This is because due to the long formal process of getting packages uploaded and built for these distributions in the official repositories, users end up having an older version in the official repositories than the ones provided by the app developers themselves, which usually have the latest updated version of the app.
So, to sum up the process for you so far, in simple steps:
- First, check whether the app you want is available in your Linux distribution repositories or not. If it is available, check whether it is the latest version.
- If it is the latest version (which you want) then you can install it directly. If not, check whether the app developers provide their own repositories or not.
- If they provide it, then you can add their repositories to your system and install the app.
- Otherwise… Keep reading this post 🙂
It is worth noting, though, that you should be careful when adding external repositories by app developers to your Linux system: Because of the ways package managers work and how they resolve dependencies, a conflict in some package versions may happen if you try to install incompatible packages from an external repository on your system. Which in turn, can break your system.
You should also be advised that when you add an external repository to your system, you are basically 100% entrusting app developers with your system, because technically, they have the ability to install any software and run any script if they decide to on user machines. Remember that adding a repository to your system enables your package manager to retrieve and install any package or system dependency from it, and not just the app you want from that repository.
This is part of the reason why appformats like Snaps, Flatpak and AppImages appeared on the Linux desktop ecosystem, which we will explore together in later sections.
3. Unofficial community repositories
Another software distribution channel where you could look for software is 3rd-party repositories.
We say “3rd-party” because the repository does not belong neither to the first-party person (the user, you) and nor to app developers themselves (the 2nd-party), but rather, belongs to another person or organization not affiliated with either.
Since Linux software repositories can be created by anyone, we have many repositories which are made as a community effort to serve users and provide easy means of installing software for them. Some software developers simply enjoy packaging applications for others, so they create these helpful repositories.
Some examples on this could be the RPM Fusion repositories for Fedora, which are a community effort to provide packages to the Fedora distribution users which have not been accepted into the official repositories. Another example is the old Webupd8 PPA, which collects many useful Linux applications and provides them easily for installation on Ubuntu machines.
Your level of trust with 3rd-party repositories should be less than the previous two sources because you don’t really know the people behind these repositories. If they represent a large group or organization like the RPM Fusion project for example, then you can feel safe adding it. But if it is just a sole person behind it, then you need to investigate the identity of that person and why are they creating this repository.
Mostly, 3rd-party repositories for Linux distributions can be found on the following services:
- Ubuntu PPAs: A set of software repositories suitable for installation only on Ubuntu-based distributions.
- Fedora COPRs: Similar to PPAs, but only for Fedora-based distributions.
- openSUSE Build Service: While mainly built for the openSUSE Linux distribution, it can be used to distribute software packages for any Linux distribution.
- AUR: Arch User Repository which is suitable for installing software on Arch Linux.
You should add a few 3rd-party repositories to your system at most; adding a lot of them can also cause your system to break because of dependency issues. You should be very selective when it comes to adding 3rd-party repositories to your system.
4. Flatpak Apps
Flatpak is a relatively new Linux appformat for distributing software. Each app is contained inside a “container” which includes the application and all its dependencies. Applications can still access shared dependencies among all Flatpak apps called “runtimes”, such as the GTK/GNOME or KDE/Qt runtimes. But other than that, applications are isolated from the rest of the system and can’t access any parts of it without user permission.
Its development started back in 2015. Mainly Red Hat and Fedora developers are among its most notable contributors.
Any developer can create his/her repository containing Flatpak applications, but the central repository, Flathub, is the most common source for Flatpak applications. So far, Flathub has served 1.6 billion downloads for Linux users:
If there is an application that you desire to install as a Flatpak package, then you should first check the official website/homepage of your app to see whether they provide an official Flatpak or not.
If not, then you can search Flathub to see if other people have packaged that application for you.
Installing Flatpaks takes some download time and extra disk space for the first few Flatpak applications, because the needed runtimes by these applications are not yet installed on your Linux system. But after that, it should become quicker because the shared runtimes are already installed on your system.
Flatpaks are safer to use and install than traditional DEB/RPM Linux packages because each app is isolated in its own container and can not access other parts of your system without your permission.
When installing a Flatpak application, either from Flathub or other sources, you can see what permissions this application will require to work on your system. You should always double-check these permissions, and check who is the maintainer of the Flatpak package, so that you can safely use it in your day-to-day tasks.
Additionally, you can use an application called Flatseal to view and edit each Flatpak package’ permissions on your system (image above).
Snaps are quite similar to Flatpaks: They also distribute Linux apps and software inside containers, but perhaps the main difference is that Snaps do not have the concept of shared “runtimes”. Instead, they package each application independently and completely inside its own isolated container.
Snaps also support server-side applications, while Flatpak does not.
Snaps are mainly developed by Canonical, the company behind the Ubuntu Linux distribution.
The source code for the repository hosting service of Snaps is proprietary. In other words, the only way to install and distribute Linux apps via Snaps is from the Snap Store owned by Canonical.
This has upsides and downsides. The upside is that you don’t need to deal with repository management and enable this repository or that to install Snap applications, because there is only one repository and it is already enabled by default. So installing new packages is as simple as running
snap install firefox.
The downside, however, is that you need to go through the Snap Store verification process by Canonical and can only host your application at their own store. You can’t create your own Snap repositories.
Just like Flatpaks, to install Snaps, simply search the Snap Store for your favourite application and see whether your app developers provide it as a Snap package or not.
AppImages are not new in the market. In fact, they have been nearby since 2004. Even Linus Torvalds, the creator of the Linux project, himself has an endorsement about it:
“This is just very cool.”
The idea of AppImages is to have a portable single-file application that contains the software and all its dependencies, so that it can run on any Linux distribution directly without having to even install it.
The concept is very similar to the .exe format on the Microsoft Windows operating system.
AppImages can be downloaded and distributed by anyone. Unlike Flatpak or Snaps, they are not isolated from the rest of your system inside a locked container, but rather, they are just contained in a portable file to ease the process of usage.
AppImages, however, do not require root permissions to work. This means that while the app you download as an AppImage has access to your home directory, it does not have access to your system files or devices.
They also do not require the installation of special software to run them: Unlike Flatpaks and Snaps, which require to to download them first and install them so that you can use them to install further software, AppImages can directly run on any modern Linux system without any further needed software or tools. They are like a binary format for Linux systems.
They have other issues because of this nature, however, such as the inability to update the portable AppImage file automatically from the software itself (unless the user allows such a thing or uses another tool to handle AppImage updates). But it can be said that they are good enough for the general use case.
Search for whether your favourite app is available as an AppImage on the AppImageHub website, or directly from the homepage of your app developers (most often in the “releases” page on their GitHub page).
7. Additional Software Installation Methods
There are some less common and more tricky ways to install software on Linux.
The most prominent one among these is the compile-from-source method: Each software when written by developers comes first in what’s known as a “source-code format”, from which later on it can be compiled by a compiler software into a binary format so that it can run directly on user machines without needing to compile it again.
Some software developers offer their app for installation via this method; you get the software, install its needed dependencies manually on your system and then compile it from the source.
If the source code is written in the C programming language, for example, then its compilation process can as simple as running:
sudo make install
But this is not the issue most of the time. Most of the time, the issue is that you don’t have the needed dependencies by the app installed on your Linux system, and you have to install each one of them manually by your own.
This could take time, and require a lot of expertise, and varies a lot from one software to another. It could also break your system if you do something you don’t know. But advanced Linux users know how to do it.
Another way could be by using another package manager such as the Nix package manager, which is coming from the NixOS Linux distribution. It allows the installation of a lot of packages independently and isolated in their own installation path from other apps and libraries on your system.
In other words, you can install multiple versions of the same software on your Linux system.
Also, and only when needed, professional Linux users can download certain packages directly from package websites such as pkgs.org and other sources. But this is rarely used, and only by people who know what they are doing.
These were the most common ways to install software on any Linux system. Remember that you should always seek official and trusted software channels to get the apps you need. Otherwise, you may end up with a damaged or hacked system that you don’t want to use.
Luckily, there are many software distribution mechanisms on Linux, and each one of them has its upsides and downsides. Select what works for you best, and always explore continuously-delivered software distribution channles to keep your system apps up to date.
Hanny is a computer science & engineering graduate with a master degree, and an open source software developer. He has created a lot of open source programs over the years, and maintains separate online platforms for promoting open source in his local communities.
Hanny is the founder of FOSS Post.