I use apt-cache pkgname to retrieve the packages as
me@host:~$ apt-cache pkgnames | wc -l
62803
get 62803 results
but
me@host:~$ dpkg -l | wc -l
2336
What's the reasons which lead such a huge distinction. I presume that dpkg is super than apt.
apt
is for managing remote repositories,dpkg
- for locally installed packages. They're related.apt
is front end todpkg
. When you runapt-get install package
it gets.deb
file, and installs it viadpkg
. So numbers differ because there's a lot of packages available, but only fraction is installed locally on your system.apt-cache
can show both installed and non-installed packages, because it queries theapt
cache - listing of what is available in remote repositories ( that cache is what you get when you doapt-get update
). For instance,Note that there is another tool which can query list of installed/removed local packages, and that's
dpkg-query
. For instance,As per dpkg manual
As far as
dpkg-query
goes, it should be noted that this tool is focused on querying the database of installed packages, and can output information in particular format(-f
option plus-W
action). For instance,Interestingly enough, dpkg database maintains listing of packages that are selected for removal or were removed at some point.
dpkg-query
can also take glob pattern as an argument, and depending on presence of absence of it show only installed/configured packages or all packages.dpkg -l shows your installed package versions (starting with ii), removed ones (rc), and some others (e.g. installed but not configured, see the manpage).
apt-cache pkgnames shows you all the available package names (but not versions of the same package) in the added repositories.