Updated: 9 October 2026 · Applies to: openSUSE Leap 16.0, openSUSE Tumbleweed and SUSE Linux Enterprise Server 16.0 (zypper 1.14.101, RPM 4.20.1); Debian 13 and AlmaLinux 10 for the other-distribution commands
To list all installed packages on openSUSE or SUSE Linux Enterprise Server (SLES), run zypper search --installed-only (short: zypper se -i). For a plain list of package names and versions, use rpm -qa. To search the repositories for a package you have not installed yet, run zypper search NAME.
zypper se -i # installed packages, patches, patterns and products zypper se -i -t package # installed packages only rpm -qa # plain list: name-version-release.arch zypper se nginx # search the repositories
Listing and searching work as a normal user; refreshing the repositories (zypper refresh) and installing need root (Root privileges are required to run this command.).
List installed packages
- Show installed packages as a table:
$ zypper se -i -t package S | Name | Summary | Type ---+-------------------------------+--------------------------------------------------------------------------+-------- i+ | aaa_base | openSUSE Base Package | package i+ | bash | The GNU Bourne-Again Shell | package i | bash-sh | Handle behaviour of /bin/sh | package ...
In the first column,i+means the package was installed on request (by you or the installer), andimeans zypper installed it automatically as a dependency. Without-t package, the list also contains installed patches, patterns and the product itself, so it is much longer than the real package count. - Add versions and the repository each package came from with
-s:$ zypper se -si nginx S | Name | Type | Version | Arch | Repository ---+-------+---------+-------------------+--------+---------------- i+ | nginx | package | 1.27.2-160000.7.1 | x86_64 | repo-oss (16.0)
Run it without a name for every installed package. A repository shown as(System Packages)means no configured repository provides that exact version any more. - Use
rpmfor plain, script-friendly output:$ rpm -qa | wc -l 146 $ rpm -qa --last | head -3 nginx-1.27.2-160000.7.1.x86_64 Fri Oct 9 16:19:09 2026 libgd3-2.3.3-160000.3.1.x86_64 Fri Oct 9 16:19:09 2026 libfontconfig1-2.16.0-160000.2.2.x86_64 Fri Oct 9 16:19:09 2026
--lastsorts by install date, newest first. On the same systemzypper se -i -t packagecounted 140 packages: the 6 extra lines inrpm -qaweregpg-pubkeyentries, the repository signing keys stored in the RPM database. - Save the list to a file, for example before a migration or reinstall:
rpm -qa --qf '%{NAME}\n' | sort > packages.txt - Page through a long list with
zypper se -i | less, or filter it:zypper se -i phpshows only installed packages whose name contains "php" (orNo matching items found.).
Check whether one package is installed
$ zypper se -i nginx No matching items found. $ rpm -q nginx package nginx is not installed
When nothing matches, zypper exits with code 104, so scripts can test it. After installing, the same commands print the i+ | nginx line and nginx-1.27.2-160000.7.1.x86_64. For full details, including the installed size and whether an update is waiting:
$ zypper info nginx Repository : repo-oss (16.0) Name : nginx Version : 1.27.2-160000.7.1 Installed Size : 2.4 MiB Installed : Yes Status : up-to-date
(Shortened.)
Search for packages in the repositories
- Refresh the repository data first, so the results are current:
sudo zypper refresh. - Search by name. The search matches any part of the name, and an empty first column means not installed:
$ zypper se nginx S | Name | Summary | Type ---+------------------------------+-------------------------------------------------------------------+-------- | dehydrated-nginx | Nginx Integration for dehydrated | package | gerbera-nginx | Nginx configuration for gerbera | package | nginx | A HTTP server and IMAP/POP3 proxy server | package ...
(Shortened.) - Narrow it down:
zypper se -x nginx(--match-exact): only the exact name.zypper se -s nginx: every available version, with architecture and repository.zypper se -d "web server": also search summaries and descriptions.zypper se -r openSUSE:repo-oss nginx: one repository only. Take the alias fromzypper lr: it isopenSUSE:repo-osson Leap 16.0 andrepo-osson Tumbleweed.zypper se -u nginx: only packages that are not installed.
- Find which package provides a file or command:
$ zypper se --provides /usr/sbin/nginx S | Name | Summary | Type ---+-------+------------------------------------------+-------- i+ | nginx | A HTTP server and IMAP/POP3 proxy server | package $ rpm -qf /usr/sbin/nginx nginx-1.27.2-160000.7.1.x86_64
rpm -qfworks only for files that are already on disk;zypper se --providesalso finds packages you have not installed.
The versions differ by release: the same search showed nginx 1.27.2 on Leap 16.0 and SLES 16.0, and 1.31.6 on Tumbleweed. On SLES, zypper searches only the repositories your system can use, so a package from a module or extension that is not enabled will not appear. The openSUSE project also has a web search for packages at software.opensuse.org.
List installed software on other Linux distributions
- Ubuntu and Debian:
apt list --installedordpkg -l(details in how to list installed packages on Ubuntu and Debian). - AlmaLinux, Rocky Linux, RHEL and Fedora:
dnf list --installedorrpm -qa(see list installed packages and search packages with dnf).
To bring the installed packages up to date on SLES, see how to patch and update a SUSE Linux Enterprise server.
Ucartz services for this topic
- KVM VPS hosting: NVMe SSD and full root access, with Free Basic Managed Support.
- Unmanaged dedicated servers: full root access and free IPMI KVM, with Free Basic Managed Support.
- Linux server management: hardening, patching, monitoring and automation for Ubuntu, Debian, RHEL and AlmaLinux.
