Skip to content

Home / Glossary / RPM Package Manager

Tech & IT

RPM Package Manager

By Sitraka Forler · Lecturer, Durham Business SchoolUpdated 13 September 2026 About this site

The package format and low-level tool behind Red Hat Enterprise Linux, Fedora and SUSE.

RPM Package Manager (originally Red Hat Package Manager) is both the .rpm file format and the rpm command on Red Hat Enterprise Linux, Fedora, SUSE and the Linux systems built from them, which you will meet on many company servers. At work you install with dnf (successor to yum) or zypper, which resolve dependencies; rpm alone does not. Elsewhere, RPM also means revolutions per minute.

The intuition

RPM is the packaging system of the Red Hat family of Linux distributions, such as Fedora, Red Hat Enterprise Linux (RHEL), CentOS Stream, AlmaLinux and Rocky Linux, and it is also used by SUSE and openSUSE. A package is a single .rpm file holding a program's files plus metadata: its name, version, what it depends on and usually a digital signature from the distributor, proving the file has not been altered. The rpm tool keeps a database of every RPM package installed on the machine.

With rpm you can install, query, verify and remove packages: rpm -qi shows a package's details, rpm -ql lists its files, rpm -qf names the package that owns a file, and rpm -V compares installed files with the database to spot changes. What rpm does not do is fetch dependencies: give it a file whose dependencies are missing and it refuses to install it.

That job belongs to dnf, the higher-level package manager on Fedora and RHEL (older releases used yum, and the yum command still runs dnf; SUSE uses zypper for the same job). dnf downloads packages from configured repositories, works out every dependency, checks signatures and uses rpm underneath to install them. In daily work on Fedora or RHEL you install, update and remove with dnf, and investigate with rpm.

Example

# File names follow name-version-release.architecture.rpm
# is bash installed, and which version?
rpm -q bash
# what does the package require?
rpm -qR bash
# dnf resolves and installs dependencies
sudo dnf install httpd
# rpm alone stops on a missing dependency
sudo rpm -ivh example-1.0-1.x86_64.rpm

Install, inspect and remove a small package on Fedora

  1. Install the tree utility: sudo dnf install tree. dnf finds the package in the enabled repositories, shows a transaction summary of what it will install, and after you confirm, downloads it, checks its signature and installs it.
  2. Show the package details: rpm -qi tree. The output lists the name, version, release, architecture, licence, summary and description, read from the local RPM database, so it works offline.
  3. List the files it installed: rpm -ql tree. You see the program itself, /usr/bin/tree, alongside its manual page and documentation. The reverse question, which package owns a file, is rpm -qf /usr/bin/tree.
  4. Look at the full inventory: rpm -qa prints one line per installed package, so narrow it with rpm -qa | grep tree (which can also match other names containing tree). Each line is a full name-version-release.architecture string.
  5. Read a package file name, using an illustrative example: mytool-1.4.2-3.el9.x86_64.rpm. The name is mytool, 1.4.2 is the upstream software version, 3.el9 is the release (the packaging revision plus a tag for the target distribution, here RHEL 9 and its rebuilds; on Fedora the tag starts with fc instead) and x86_64 is the processor (CPU) architecture; noarch would mean it runs on any architecture.
  6. Remove it: sudo dnf remove tree. dnf shows what it will remove and asks for confirmation; afterwards rpm -q tree prints "package tree is not installed".

Use dnf to change what is installed, because it resolves dependencies and checks the signatures of packages from your repositories, and use rpm -q to ask what is installed and where its files live.

Common pitfalls

  • Installing a downloaded file with rpm -i, hitting a 'Failed dependencies' error, then forcing it with --nodeps: the program can fail at run time and the system is left inconsistent. Install local files with sudo dnf install ./file.rpm so dnf fetches what is missing.
  • Querying the command name instead of the package name: rpm -q dig reports that no such package is installed even when the command works, because dig comes from the bind-utils package. Ask by file with rpm -qf /usr/bin/dig, or dnf provides /usr/bin/dig if it is not installed yet.
  • Mixing package families: rpm and .rpm files belong to the Red Hat and SUSE families, while Debian and Ubuntu use apt and .deb files, so a Fedora tutorial fails on an Ubuntu server. Check which system you are on with cat /etc/os-release before copying commands.
  • Confirming without reading the transaction summary: dnf remove can take other packages with it, including packages that depend on the one you are removing. Read the list before answering yes, and be wary of adding -y in scripts that run on shared servers.
  • Disabling signature checks to make an error go away: a package from an unknown website, installed without verifying its signature, can contain anything. Import the vendor's official signing key or use a trusted repository instead.

Frequently asked questions

What does RPM stand for?

RPM stands for RPM Package Manager, a recursive acronym in which the first letter refers to RPM itself. It was originally called the Red Hat Package Manager. Outside Linux the letters mean other things: revolutions per minute in engineering, and revenue per mille (per thousand impressions) in online advertising.

What is the difference between rpm and dnf?

rpm is the low-level tool: it installs, queries, verifies and removes individual packages, but it never fetches missing dependencies from repositories. dnf sits on top: it downloads packages, works out every dependency and uses rpm underneath. Use dnf to install and update software, and rpm -q to inspect it.

How do I check if a package is installed on Fedora or RHEL?

Run rpm -q followed by the package name, for example rpm -q tree. If the package is installed you get its full name, version, release and architecture; if not, rpm prints that the package is not installed. To find which package owns a file, use rpm -qf with the path, such as rpm -qf /usr/bin/tree.

How do I update packages with dnf?

Run sudo dnf upgrade to bring every installed package up to the newest version in your enabled repositories, or add a package name, as in sudo dnf upgrade tree, to update just that one. dnf lists the changes and asks for confirmation first. The older spelling dnf update still works as an alias.

Can I install an RPM package on Ubuntu?

Not directly. Ubuntu and Debian use .deb packages with apt, so the normal route is a .deb build or the Ubuntu repository version of the same software. Tools such as alien can convert an .rpm into a .deb, but dependencies and install scripts often do not translate cleanly, so treat that as a last resort.

Test yourself

Learn by doing - free, in your browser

Related terms