| Tested on | Ubuntu 25.04 (Plucky Puffin) |
|---|---|
| Package | apt 3.0.0 |
| Applies to | Ubuntu, Debian, Kali Linux, Linux Mint, Pop!_OS, Raspberry Pi OS, elementary OS, Zorin OS, Parrot OS, MX Linux |
| Privilege | read-only (no elevated privileges) |
| Man page | apt-cache(8) |
| Scope | Read-only APT index queries: search, metadata, policy, and forward or reverse dependencies without network access after apt update. |
| Related guides | dpkg command Linux commands cheat sheet |
apt-cache — quick reference
Search and list
Find package names in the local index — no root required.
| When to use | Command |
|---|---|
| Search names and descriptions for a keyword | apt-cache search pattern |
| Search package names only | apt-cache search --names-only pattern |
| List package names matching a prefix | apt-cache pkgnames prefix |
Package records
| When to use | Command |
|---|---|
| Show readable metadata (version, depends, size) | apt-cache show package_name |
| Show versions, reverse depends, and file mapping | apt-cache showpkg package_name |
| Show installed vs candidate version and pin priority | apt-cache policy package_name |
| List available versions from all sources | apt-cache madison package_name |
Dependencies
| When to use | Command |
|---|---|
| Show packages this package depends on | apt-cache depends package_name |
| Show packages that depend on this package | apt-cache rdepends package_name |
| Walk the dependency tree recursively | apt-cache depends --recurse package_name |
| Limit depends output to important packages | apt-cache depends --important package_name |
Diagnostics
| When to use | Command |
|---|---|
| List packages with unmet dependencies in the cache | apt-cache unmet |
Help and version
| When to use | Command |
|---|---|
| Show built-in usage summary | apt-cache --help |
| Print apt version (apt-cache ships with apt) | apt-cache --version |
apt-cache — command syntax
apt-cache queries data under /var/lib/apt/lists/ populated by apt update. Synopsis from apt-cache --help on Ubuntu 25.04 (apt 3.0.0):
apt-cache [options] command
apt-cache [options] show pkg1 [pkg2 ...]
Most used commands:
showsrc - Show source records
search - Search the package list for a regex pattern
depends - Show raw dependency information for a package
rdepends - Show reverse dependency information for a package
show - Show a readable record for the package
pkgnames - List the names of all packages in the system
policy - Show policy settingsapt-cache does not install or remove packages. Refresh the index with sudo apt update when you need the newest repository data.
apt-cache — command examples
Essential Search the local package index
Find the exact package name before install — works offline against the last apt update.
Run the command:
apt-cache search --names-only '^curl$'Sample output:
The example below transfers data with curl over HTTP(S); the curl command is a quick reference for flags and syntax.
curl - command line tool for transferring data with URL syntaxOmit --names-only to match descriptions too (more results, slower to scan).
Essential See installed vs candidate version
policy explains which version apt prefers and why — essential when upgrades stall or multiple repos supply the same name.
Run the command:
apt-cache policy curlSample output:
curl:
Installed: 8.12.1-3ubuntu1
Candidate: 8.12.1-3ubuntu1
Version table:
*** 8.12.1-3ubuntu1 1001
1001 http://archive.ubuntu.com/ubuntu plucky/main amd64 Packages
100 /var/lib/dpkg/statusThe *** marks the version apt would install. Priority 1001 beats plain 500 from a standard mirror. The same policy check confirms an uninstall stuck Installed: (none) after apt purge—see how to remove software on Ubuntu. It also compares Ubuntu’s packaged HPLIP branch with what your printer needs—see install HPLIP on Ubuntu before you switch to HP’s manual .run installer. For imagemagick, Candidate shows ImageMagick 7 on 26.04 (7.1.x) vs ImageMagick 6 on 24.04 (6.9.x)—see How to Install ImageMagick 7 on Ubuntu 26.04 or How to Install ImageMagick on Ubuntu 24.04 & 22.04.
Essential Read full package metadata with show
show prints the same fields administrators skim before approving an install.
Run the command:
apt-cache show curl | head -12Sample output:
Package: curl
Architecture: amd64
Version: 8.12.1-3ubuntu1
Multi-Arch: foreign
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Curl Maintainers <team+curl@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 491
Depends: libc6 (>= 2.38), libcurl4t64 (= 8.12.1-3ubuntu1), zlib1g (>= 1:1.1.4)Compare with apt show curl — similar fields, different formatter.
Common List forward dependencies
Know what libraries a package pulls before installing on a minimal system.
Run the command:
apt-cache depends curl | head -6Sample output:
curl
Depends: libc6
Depends: libcurl4t64
Depends: zlib1gAdd --recurse for the full tree (can be long on desktop metapackages).
Common Find reverse dependencies before removal
See which installed packages would break if you remove a library.
Run the command:
apt-cache rdepends curl | head -8Sample output:
curl
Reverse Depends:
debian-goodies
zfs-test
mariadb-plugin-connect
libsoup2.4-tests
libsoup-3.0-tests
djvulibre-binNot every listed package is installed — cross-check with dpkg -l or apt list --installed.
Common List names matching a prefix
Quick autocomplete-style listing when you know the first letters of a package family.
Run the command:
apt-cache pkgnames curl | head -5Sample output:
curl
curlftpfsUseful in scripts that enumerate related packages.
Advanced Debug versions with showpkg
showpkg exposes cache file paths, MD5 sums, and reverse-depends — handy when mirroring or debugging stale indexes.
Run the command:
apt-cache showpkg curl | head -14Sample output:
Package: curl
Versions:
8.12.1-3ubuntu1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_plucky_main_binary-amd64_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_plucky_main_binary-amd64_Packages
MD5: f83293d10df083ae6f7bb7d01642913c
Description Language: en
File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_plucky_main_i18n_Translation-en
MD5: f83293d10df083ae6f7bb7d01642913c
Reverse Depends: When MD5s disagree across list files, run sudo apt update.
Advanced Compare repo versions with madison
madison lists every indexed version and the repository that provides it — similar to apt list -a.
Run the command:
apt-cache madison curlSample output:
curl | 8.12.1-3ubuntu1 | http://archive.ubuntu.com/ubuntu plucky/main amd64 PackagesMultiple rows appear when PPAs or security pockets ship alternate versions.
apt-cache — when to use / when not
| Use apt-cache when | Use something else when |
|---|---|
| You need read-only metadata from the local APT cache | You are installing or removing — apt |
| You are offline but the index was updated recently | You need fresh mirror data — sudo apt update first |
| You debug pinning, policy, or dependencies | You want friendly search output — apt search / apt show |
| You script exact cache queries in maintenance tools | You query installed files only — dpkg -L / dpkg -S |
apt-cache vs apt search
| apt-cache | apt search / apt show | |
|---|---|---|
| Privilege | User (read-only) | User for search/show |
| Output style | Dense, script-oriented | Colored, paginated lists |
| Policy / madison / showpkg | Native subcommands | Not available |
| Typical use | Diagnostics and automation | Interactive admin |
Many admins use apt for daily search and apt-cache for policy, madison, and rdepends.
apt-cache — interview corner
What does apt-cache do?
apt-cache queries the local APT package index built by apt update. It searches names, prints metadata, shows policy priorities, and lists dependencies — without installing anything and without network once lists are cached.
A strong answer is:
"apt-cache is read-only metadata from /var/lib/apt/lists — search, show, policy, depends, and rdepends offline after an update."
Do you need sudo for apt-cache?
No. apt-cache never modifies the system. Any user who can read /var/lib/apt/lists/ can run apt-cache search, policy, and depends.
Installing packages still requires sudo through apt or apt-get.
A strong answer is:
"apt-cache is read-only — no sudo. I use it as a regular user to inspect packages before escalating for install."
What does apt-cache policy show?
For each package name, policy prints:
- Installed version on disk
- Candidate version apt would install next
- Version table — each available version, its pin priority, and source URI
High-priority pins (for example 1001 from security pockets) beat lower-priority mirrors.
A strong answer is:
"policy shows installed vs candidate and the pin priority table — I use it when apt won't upgrade or multiple repos conflict."
What is the difference between depends and rdepends?
| Command | Direction |
|---|---|
apt-cache depends pkg |
What pkg needs (forward dependencies) |
apt-cache rdepends pkg |
What needs pkg (reverse dependencies) |
Run rdepends before removing shared libraries to see potential breakage.
A strong answer is:
"depends is what the package requires; rdepends is who requires the package — critical before removals."
Why can apt-cache show outdated information?
apt-cache only reads cached list files. If nobody ran apt update recently, Candidate versions may lag behind the mirror.
Fix: sudo apt update, then re-run apt-cache policy.
A strong answer is:
"It reads the local index only — stale until apt update. I refresh lists before trusting candidate versions."
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
Empty search results |
Stale or minimal index | sudo apt update |
Package has no installation candidate |
Not in enabled repos | Check apt-cache policy; edit sources |
policy shows only installed line |
Package not in any list file | Enable component (universe, etc.) and update |
rdepends lists hundreds of names |
Metapackage or popular library | Filter with grep; verify with dpkg -l |
showsrc errors about deb-src |
No source repositories enabled | Add deb-src URIs to sources; use apt-cache show for binary metadata |
Differs from apt show |
Formatter only | Compare Version and Depends fields |
