Sometimes you want to check if the configured RPM repositories already contain an updated version of a package - or you simply want to get a list of installable versions of a package. But how can you simply list the available versions of a package in a RPM repo?
The "obvious" command to enter is most likely dnf search - since we're searching for a specific package and its versions. But the output does not show any version at all - it only shows the package name itself:
[root@rhel9 ~]# dnf search my-fancy-package
Updating Subscription Management repositories.
Last metadata expiration check: 0:03:08 ago on Mon 04 Mar 2024 03:58:59 PM CET.
==================== Name Exactly Matched: my-fancy-package ====================
my-fancy-package.noarch : my super fancy package
When using a DEB based Linux distribution (such as Debian or Ubuntu), the command apt-cache show <pkgname> would reveal the version(s) of the package. Maybe this also goes for RPM based Linux distributions?
The equivalent command would be dnf info <pkgname>, so let's try this:
[root@rhel9 ~]# dnf info my-fancy-package
Updating Subscription Management repositories.
Extra Packages for Enterprise Linux 9 137 kB/s | 2.6 kB 00:00
Shared Packages for Enterprise Linux 9 139 kB/s | 2.6 kB 00:00
Installed Packages
Name : my-fancy-package
Version : 1.1.21
Release : 1.el9
Architecture : noarch
Size : 357 k
Source : my-fancy-package-1.1.21-1.el9.src.rpm
Repository : @System
Summary : my super fancy package
License : GPLv3
Description : my super fancy package
Unfortunately only one version (1.1.21) is showing up in the output. The Repository entry mentions @System, which means this is the currently installed package.
But what about the other available versions of this package, still sitting in the RPM repo? I want to list them!
Similar is the output of dnf list <pkgname>; the output is - again - only showing the version of the installed package:
[root@rhel9 ~]# dnf info my-fancy-package
Updating Subscription Management repositories.
Extra Packages for Enterprise Linux 9 137 kB/s | 2.6 kB 00:00
Shared Packages for Enterprise Linux 9 139 kB/s | 2.6 kB 00:00
Installed Packages
my-fancy-package.noarch 1.1.21-1.el9 @System
However with an additional parameter --showduplicates, all the available package versions from the repository are finally showing up!
[root@rhel9 ~]# dnf list my-fancy-package --showduplicates
Updating Subscription Management repositories.
Extra Packages for Enterprise Linux 9 139 kB/s | 2.6 kB 00:00
Shared Packages for Enterprise Linux 9 145 kB/s | 2.6 kB 00:00
Installed Packages
my-fancy-package.noarch 1.1.21-1.el9 @System
Available Packages
my-fancy-package.noarch 1.1.15-1.el9 Internal_Repo_shared-9
my-fancy-package.noarch 1.1.16-1.el9 Internal_Repo_shared-9
my-fancy-package.noarch 1.1.17-1.el9 Internal_Repo_shared-9
my-fancy-package.noarch 1.1.18-1.el9 Internal_Repo_shared-9
my-fancy-package.noarch 1.1.20-1.el9 Internal_Repo_shared-9
my-fancy-package.noarch 1.1.20-2.el9 Internal_Repo_shared-9
my-fancy-package.noarch 1.1.20-3.el9 Internal_Repo_shared-9
It's really not obvious, but the dnf list <pkgname> --showduplicates command lists all the available package versions from the repository.
With this dnf command just learned, the Linux package command cheat sheet, which shows a comparison of yum, dnf, apt, zypper and rpm vs. deb commands, was updated.
No comments yet.
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Database Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Office OpenSearch PGSQL PHP Perl Personal PostgreSQL Postgres PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMWare VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder