Package managers download applications from the distribution’s online “repositories”. A repository is a location (on the Internet, on the CD/DVD or on the user’s computer) from which the applications can be retrieved and installed. If a particular program is not available from the distribution’s repository, the user can add another repository from which he can retrieve the package he wants. The package manager, in our example above, can retrieve the application X from the added repository, say Repo 2, but A, B and C from the distribution’s repository Repo 1.
All the package managers do their jobs well but sometimes problems arise due to a number of factors.
- Naming differences in the repositories. For example A is listed as A.1 in a repository and the package manager is not able to find and download application A.
- Binary packages are not immediately available on the repositories.
- The repositories do not “talk” to each other and packages cause conflicts.
As we know, the programmers release the software they develop as source code, in most cases in tar.gz or tar.bz2 formats. The “packaging” process involves retrieving these files and writing scripts for the package manager to download and install the dependencies. So, human error can be added to our list above.