Installing software on Linux is not as clear-cut and standardized a procedure as it is on Windows.
The tools vary between distributions, and there’s usually more than one way to do it.
This inconsistency is frightening for Linux newcomers. Windows is always double-click on the .exe or .msi file, click “Next” a few times, and wait for the installation to finish. Simple. Succinct. Predictable.
Departing from this paradigm is scary. But it shouldn’t be. Yes, Linux is different, but when it comes to installing software, it also enjoys many advantages over Windows.
One of those advantages is the use of repositories.
Where Do You Get Your Software?
In order to install software, you have to get it somehow.
If your a Windows user, some of your software probably comes on a disc and some is downloaded from a variety of websites. To install it, you have to hunt around for your disc, or find and navigate a website. Then you have to load the disc or download a file.
Yes, installing it once you’ve found it is easy, but finding it is a pain.
How Do You Update Your Software?
If you’re lucky, the software includes a built-in updater that checks for and installs updates automatically.
But that’s far from universal. And if you are lucky enough to have built-in updaters, each one is different.
There’s got to be a better way right? Wouldn’t it be nice to centralize the getting and updating of your software? To have one hub where you download it, install it, and check for updates? Well, guess what. Such a thing exists. It’s called a software repository.
Centralizing Your Software Using Repositories
A software repository, often simply called a repository or repo, is a collection of software installers.
Repositories aren’t unheard of in the Windows world. Windows Updates are managed through a software repository. If you’re a gamer, you probably use Steam. Steam is a software repository (among other things) for video games.
But Windows lacks a serious, uniform, baked-in equivalent.
Linux does not.
Virtually every Linux distribution has one or more massive repositories filled with nearly every Linux program you could need or want. And most support adding more repos if the included ones aren’t enough.
These repositories are updated regularly to include new software and updates to old software.
Repositories distribute software via packages. A package is a collection of files and information needed for the software to work. Packages come in many forms. Not all work the same way. But their end goal is the same. To gather together everything that’s needed into one… package.
Debian and its many derivatives use a package format called deb. Fedora, openSUSE, and many other distributions use rpm packages. And so on. Packages are often incompatible between distributions, even if they are the same type. For example, Ubuntu and Debian both use deb packages, but Ubuntu packages won’t always work on Debian. Packages are also usually specific to a distribution version.
Package Managers & Software Centers
Packages are installed, uninstalled, and updated using a package manager. The package manager can search the repository, monitor the repository for updates, and install/uninstall the packages. There are several popular package managers.
Debian, Ubuntu, Mint, and other related distributions use the apt-get package manager. Fedora uses yum. OpenSUSE has zypper. And many more. Most of these package managers are terminal based.
However, you can usually find graphical interfaces built on top of the terminal tools. For example, Synaptic is a popular graphical tool for apt-get. Many distributions are also opting to use what they call software centers to provide a more user-friendly and informative user interface. These software centers often include screenshots, reviews, and other handy information.
But at their core, these graphical tools are simply shells around a package manager.
Repositories Are Your Friends
The centralization of software installation and updating is my favorite feature of Linux distributions.
Setting up Windows takes me the better part of a day because of the software I have to hunt down and install. Now that I’m passed the learning curve, Linux takes me about 45 minutes. And most of that is watching a progress bar.
It does take some getting used to. And the variation between distributions and distribution versions is annoying. But the savings in labor is worthwhile.