If you have been a Windows and/or a macOS user to date, you are probably used to searching for a program on the internet (often offered in an executable installer) and having to download and install it. You're probably familiar with software distributed on CDs, DVDs, etc. which often have an autorun feature from where you can then install them. For free and open systems like Ubuntu GNU/Linux there is some software distributed in this fashion, but those are mostly proprietary and closed programs.
On systems like Ubuntu, most software is packaged in nice .deb (or .rpm, like in Red Hat) files which contain the programs and libraries you need. These files can be downloaded or come in CDs (Ubuntu's CD is full of them). Repositories are servers which contain sets of packages. You generally access them with tools like Synaptic.
These tools can list all the packages you have installed (from your kernel to your favorite application with all the libraries in between) and the packages that are available in the repositories that you have configured the tool to have access to. They also let you search for simple things like "image editor".
These tools provide a simple, centralized method of software installation and give the distributors (who set up the repositories) a centralized way to send you updates(1) to your software.
In Ubuntu you generally want to have at least Ubuntu's repositories (which may include the install CD) but it is not uncommon to have other repositories (from other packagers) set up.
It's important to know that most of the tools you'll want to use in Ubuntu are already in Ubuntu's repositories. You can go search the internet for packages, or even source code, for others, but these will be more difficult to install and won't, most of the time, integrate as well with your system.
So now you know: no more endless searching looking for spyware-infested shareware and freeware. The vast majority of useful software available for Linux is pre-packaged for you.
Software in Ubuntu's repository is divided into four categories or components - main, restricted, universe and multiverse.
Most people will use the Ubuntu Software Centre to install the software they want. But if you're interested in learning more about the different categories of software we include, read on! Software is grouped according to our ability to maintain it and by how well it meets the goals of our free software philosophy. The standard Ubuntu installation is a collection of software from the main and restricted components. You can install additional software from the Ubuntu Software Centre.
The main component contains applications that are free software, can be freely redistributed and are fully supported by the Ubuntu team. This includes the most popular and most reliable open-source applications available, many of which are included by default when you install Ubuntu. Software in main includes a hand-selected list of applications that the Ubuntu developers, community and users feel are most important, and that the Ubuntu security and distribution team are willing to support. When you install software from the main component, you are assured that the software will come with security updates and that commercial technical support is available from Canonical.
Our commitment is to only promote free software – or software available under a free licence. However, we make exceptions for a small set of tools and drivers that make it possible to install Ubuntu and its free applications on everyday hardware. These proprietary drivers are kept in the restricted component. Please note that it may not be possible to provide complete support for this software because we are unable to fix the software ourselves - we can only forward problem reports to the actual authors. Some software from restricted will be installed on Ubuntu CDs but is clearly separated to ensure that it is easy to remove. We will only use non-open-source software when there is no other way to install Ubuntu. The Ubuntu team works with vendors to accelerate the open-sourcing of their software to ensure that as much software as possible is available under a free licence.
The universe component is a snapshot of the free, open-source, and Linux world. It houses almost every piece of open-source software, all built from a range of public sources. Canonical does not provide a guarantee of regular security updates for software in the universe component, but will provide these where they are made available by the community. Users should understand the risk inherent in using these packages. Popular or well supported pieces of software will move from universe into main if they are backed by maintainers willing to meet the standards set by the Ubuntu team.
The multiverse component contains software that is not free, which means the licensing requirements of this software do not meet the Ubuntu main component licence policy. The onus is on you to verify your rights to use this software and comply with the licensing terms of the copyright holder. This software is not supported and usually cannot be fixed or updated. Use it at your own risk.
A Quick, Tongue-in-cheek Description of the Ubuntu Repositories
- $release: Don’t touch it, I like consistency, even with my bugs.
- $release-security: I’ll accept patches to existing versions (and very rare version upgrades if absolutely necessary) in the process of keeping my system secure.
- $release-updates: Okay, some bugs are worth fixing, and I trust you this much (holds up two fingers like Maxwell Smart).
- $release-backports: I have something akin to technology ADHD, needing the latest of everything I can possibly get, but I can’t handle running the development branch.
- $devel: I can take it. Seriously. If you break my X, I shall become more powerful than you could possibly imagine. I’ll file and maybe even fix the bugs and I’ll do it even if power management is not so much ‘managed’ as vomited all over the wall. Come get some.
- Debian: We do the work so you don’t have to.
Source: Jeff Waugh, "Understanding the Ubuntu Package Repositories" (modestly edited, as recommended by Waugh)
Managing Repositories in Ubuntu
This page explains how to manage repositories in Ubuntu using a graphical user interface.
Managing Repositories in Kubuntu
This page shows you how to manage repositories in Kubuntu
Managing Repositories from the Command Line
If you prefer to use the command line, this page has the details
Managing Personal or Local Repositories
If there are packages you want to load outside of the supported repositories, this page explains a way to ease package dependency issues.