Although each Linux distribution comes with a collection of packages, they are just a small set of the over 30,000 packages available for Linux. These packages are kept in repositories. Each Linux distribution enables repositories related to the distro. Most Linux distros allow you to enable additional repositories, and to add new repositories.
While repositories are the primary source of applications, there are other sources. The openSUSE Build Service offers packages for all major distributions.Sourceforge is another source for open and free software. There are many more, just do a Google search for "Linux software repositoritories."
Each distribution provides one, or more, package managers that manage the downloading and installing packages. Packages are often dependent on other packages. Package managers check these dependencies, and most will download and install these dependencies. A few only complain about missing dependencies, and will not install the package until the dependencies are installed.
Linux package usually come in Debian (.deb) or Red Hat Package Manager (.rpm) formats. Beside downloading the correct format, you need to be aware of the hardware architecture. For PC users, this usually means choosing between 32-bit and 64-bit packages. It goes without saying that not all packages are available for all architectures. It all depends on the goals and resources of the community developing the packages.
If you don't like a particular software package, download and install a different package. The cost is the time to download and install the package. Free software also means freedom to explore and choose the software that you like.
The following section discusses the Graphical Package Managers available for each distribution covered in this course. The sections on Debian Package Management and Red Hat Package Management discuss the commands for managing .deb and .rpm files, respectively. For those readers who are not familiar with using the Linux command-line, you can skip these sections until you are familiar with using the command-line.