Skip to main content

Finding a source RPM of a binary RPM

You can build several binary RPMs out of one source RPM. Given a binary RPM, how can you find the name of the source RPM? This article goes through various methods to find that out.

Quick overview of source RPMs in Fedora

All sources for packages in Fedora are stored in a so called dist-git. For example, sources for cockpit, the web console, are stored under rpm/cockpit. The cockpit source RPM (also referred to as SRPM) is used to build several packages:

  • cockpit (core),
  • cockpit-networkmanager (plugin for Network management)
  • cockpit-storaged (plugin for managing storage)

and much more.

In the case of the cockpit-networkmanager package, it’s not hard to guess that it probably comes either from cockpit, or cockpit-networkmanager source packages.

RPM doesn’t restrict its users to always use the source package name as a prefix though. A good example is the httpd (Apache 2 web server) source package. Of course, the main binary package built out of it is named httpd. Nevertheless, this SRPM is also used to build some popular modules. These modules are shipped in binary RPMs named mod_ssl or mod_ldap etc.

The question is: How to find out that the mod_ssl RPM was built from the httpd SRPM?

Using rpm -qi

If you have the package installed, you can just run rpm -qi [PACKAGE_NAME] to find out, see the following example:

$ rpm -qi mod_ssl
Name        : mod_ssl
...
Signature   : RSA/SHA256, Mon Jun 27 12:54:03 2022, Key ID 999f7cbf38ab71f4
Source RPM  : httpd-2.4.54-3.fc36.src.rpm
Build Date  : Fri Jun 17 13:09:36 2022
...

As you can see, the name that you looked for is under the Source RPM field.

Using dnf info

If you don’t have the package installed, you can always use dnf directly to find out, see:

# dnf info mod_ssl
Failed to set locale, defaulting to C.UTF-8
Updating Subscription Management repositories.
Last metadata expiration check: 2:21:28 ago on Tue Aug 30 17:00:05 2022.
Available Packages
Name         : mod_ssl
...
Size         : 111 k
Source       : httpd-2.4.54-3.fc36.src.rpm
Repository   : updates
...

The name is shown under the Source field.

Downloading the source RPM

Just a quick bonus to end this article. If you want to inspect the source RPM yourself, you can download it using dnf download --source:

# dnf download --source mod_ssl
...  
httpd-2.4.54-3.fc36.src.rpm
# file httpd-2.4.54-3.fc36.src.rpm 
httpd-2.4.54-3.fc36.src.rpm: RPM v3.0 src

TL;DR

Use rpm -qi <NAME> for installed packages, dnf info <NAME> doesn’t care if the package is installed. dnf download --source can be used to download the source package.