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

  1. 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), and i means 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.
  2. 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.
  3. Use rpm for 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
    --last sorts by install date, newest first. On the same system zypper se -i -t package counted 140 packages: the 6 extra lines in rpm -qa were gpg-pubkey entries, the repository signing keys stored in the RPM database.
  4. Save the list to a file, for example before a migration or reinstall:
    rpm -qa --qf '%{NAME}\n' | sort > packages.txt
  5. Page through a long list with zypper se -i | less, or filter it: zypper se -i php shows only installed packages whose name contains "php" (or No 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

  1. Refresh the repository data first, so the results are current: sudo zypper refresh.
  2. 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.)
  3. 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 from zypper lr: it is openSUSE:repo-oss on Leap 16.0 and repo-oss on Tumbleweed.
    • zypper se -u nginx: only packages that are not installed.
  4. 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 -qf works only for files that are already on disk; zypper se --provides also 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

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

Was this answer helpful? 1 Users Found This Useful (1 Votes)