What Are Repositories?
When working with Linux, packages and repositories are elements that will often come up. In this article we will to look over what they are and what they mean to you.
These days we take things like app stores for granted as a nice easy central hub where we can download all of our software. Long before this concept became a reality, Linux distributions were already using a similar method to distribute software, called package management.
The Linux Distro Solution
Most open source software is distributed in the format of its original source code (the programming code that the developer wrote the software in). It then needs to be compiled into a program file before it can be used. This presented something of a barrier to entry to use the software, as it required the end user to have some basic development understanding to obtain and compile the software for their system.The solution to this for Linux was the concept of the distribution. A Linux distribution is the combination of the Linux operating system with various open source software packages pre-compiled for an end user to use.
Each release of a Linux distribution comes with set versions of each specific piece of component software. This is to ensure that all the various parts work together when installed. The software is distributed in what are called packages, which consist of the software being installed and a list of requirements for that software to run. Most Linux distributions make use of package managers, with the most common being YUM and APT, both of which install these packages and verify that the requirements for the packages are met before installing.
Welcome to Linux Repositories
This software has to come from somewhere, and that is where repositories come in. Repositories are servers that host the software packages that these package managers use to install the software onto your computer for you. Generally the software in a repository will be broken down by Linux distribution release, this is so that you can get the software that is compatible with the Linux distribution release that you are using.
When a Linux distribution is installed on a computer, it will configure its default repositories for use. These are the repositories that contain all the software that the distribution needs to run, along with some extra packages that the maintainers of the distributors feel will be useful for users of the Linux distribution. As the Linux distributors compile, test and ensure all the packages in the repository work together, you can be sure that the software you are installing will work on your system and be malware free. Some distributions also offer optional additional repositories that may allow you to make use of some software packages that, for whatever reason, they don’t include in the default repositories. Generally these additional repositories will come with some form of warning as to why the software inside wasn’t included in the main repositories.
Third Party Repositories
You can also add third party repositories to your system in order to install packages from other providers. Some software developers do provide software repositories for their projects to allow you to install from their repositories with the benefit of automatic updates when they become available, rather than needing to manually update the software. Some distributions such as Red Hat Enterprise Linux and CentOS ship with a limited number of packages in their repositories, but the Fedora project (upon which Red Hat and CentOS are based) provides a repository called Extra Packages for Enterprise Linux (EPEL), which offers a wider range of packages for use. Note that you should only install repositories from software providers that you trust, as it’s possible for a someone with malicious intent to host a repository that would cause the package manager to overwrite a legitimate package with another containing an “upgrade” package, turning out to be malware of viruses. This is something to be mindful of when following tutorials online that recommend installing another repository on your system.