English French
Package management system
Package Management System
Fedora is a distribution that uses a package management system. This system is based on https://rpm.org[rpm] , the RPM Package Manager, with several higher level tools built on top of it, most notably https://www.freedesktop.org/software/PackageKit/[PackageKit] (default gui) and xref:dnf.adoc[DNF]. GNOME Software is another GUI package manager.
Advantages of package management systems
Package management systems have many advantages:
It's easy to query what version of a package is installed or available.
It's easy to remove a package entirely, making sure all its files are gone.
It's easy to verify the integrity of the packages files, so you can see if it's been corrupted or tampered with.
It's easy to upgrade a package by installing the new version and removing all the old versions files. This will make sure not to leave any lingering files from the old package around to confuse or break things.
It's easy to see what packages require or provide things that other packages provide or require, so you can be sure to have the needed items for the package to function correctly.
It's easy to install or remove groups of packages.
In many cases it's possible to downgrade back to a previous version of a package, for example when a new version has a bug.
Disadvantages of package management systems
You are restricted to either using the versions of the package that are available or having to make your own package if you need a different version.
Why mixing source installs and packages is a bad idea
Package management systems have no way to query or note when you bypass them and install something from source. You should avoid mixing source installs and packaged installs for (at least) the following reasons:
You lose all the advantages above from a package managed system.
Installing from source may overwrite, delete, or change existing files that are in a package, making that package not function correctly.
The source install may override a package install causing undefined behavior in the package or source installed item.