Ubuntu – How does APT work (apt-get, cache, search)

aptpackage-managementrepositorysoftware installationupdates

I have some questions about the APT package manager.

As I understand we have repositories URLs located at /etc/apt/sources.list and /etc/apt/sources.list.d/*

When apt-get update is called, apt tries to connect to all specified repositories in the file and download information about those repositories about what programs are available and so on.

It caches all retrieved data locally in order to use it later without making internet requests to the repository.

When apt-get install is called it searches local cache package list from available repositories and if package is not found it does nothing except display an error.

apt-get search also looks into local cache and doesn't make any requests to the internet.

Am I right? I am not sure about commands that make requests instead of searching data in the local cache.

Also, what is the difference between apt-cache search and apt search? I can guess they both use the local cache.

Best Answer

You are right that apt-get update reads from the sources (online) and the other commands apt-get search and apt-get install read from the cached information. From man apt:

update (apt-get(8))
       update is used to download package information from all configured
       sources. Other commands operate on this data to e.g. perform
       package upgrades or search in and display details about all
       packages available for installation.

The difference between apt search <package> and apt-cache search <package> is that the output of apt search is fancier (has colours, alphabetically organised, has nice line separation for easy reading) because apt is a fancy new interface. This is explained well in this answer on the difference between apt & apt-get

However, search isn't the only thing you can do with apt-cache:

Usage: apt-cache [options] command
       apt-cache [options] show pkg1 [pkg2 ...]

apt-cache queries and displays available information about installed
and installable packages. It works exclusively on the data acquired
into the local cache via the 'update' command of e.g. apt-get. The
displayed information may therefore be outdated if the last update was
too long ago, but in exchange apt-cache works independently of the
availability of the configured sources (e.g. offline).

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 settings

This is from the info page for apt-cache

apt combines commands from apt-get and apt-cache, so you can get the same or slightly fancier/tidied up output from any of the apt-cache [option] <package> commands with apt [option] <package> eg

apt show gimp

displays almost exactly the same as

apt-cache show gimp
Related Question