What is the Debian equivalent of Fedora's yum list installed | grep wc --lines
?
8 Answers
According to this thread:
To list installed packages:
dpkg --list | wc --lines
To see if a package is installed:
dpkg --list | grep package
-
3You're including the header lines and some non-installed packages (e.g.
rc
(uninstalled but with config files left over)) in your count. Commented Feb 24, 2011 at 23:13
dpkg -l | grep -c '^ii'
There are subtle variants like dpkg -l | grep -c '^?i'
if you want to include packages that are installed but whose removal you've requested. Another way is
aptitude search '~i' |wc -l
You can even poke directly into the dpkg database:
sh -c 'set /var/lib/dpkg/info/*; echo $#'
This one includes packages that are not installed but that have configuration files left over; you can list these with dpkg -l | grep '^rc'
.
What I've been using is:
dpkg --get-selections | wc --lines
This will give you the number of installed packages.
If you want to find if a particular package is installed, use:
dpkg --get-selections | grep <package>
I believe that this will solve Gilles' complaint about including other, non-installed packages.
apt list --installed | grep -c 'installed'
#apt list --installed=> shows all packages> we grep the results from the list only for the lines containing the string "installed"
For me, this command worked
dpkg -l
is nice but I actually find myself using apt-show-versions
(not installed by default on Debian; install the package of the same name) a lot instead, especially when I want to process the output further (dpkg tries to be too clever with line wrapping).
Synaptic, a GUI package manager, displays the count at the bottom of its main window.
If you want an exact count of packages, you should not count the header lines output by dpkg-query -l
, so you need a pattern to match lines starting with ii
. The following one-liner gives you the number of lines starting with ii
and therefore the number of installed packages:
dpkg-query -l | grep "^ii" | wc -l
This gives the same output as
dpkg --get-selections | grep "[[:space:]]install" | wc -l
The grep pattern in the second command ignores lines that contain the string "deinstall" in the output of dpkg --get-selections
.
For instace, you can do this:
dpkg-query -l | nl | tail -1 | awk '{print $1}'
-
OK, it's true that
nl | tail -1 | awk '{print $1}'
will report the number of lines in its input (except, if there is no input, it will say nothing instead of reporting0
) — but why would you recommend such a kludge when other answers are already usingwc -l
? Commented Jul 29, 2016 at 1:58 -
That's funny cause i didn't read previous answers! @G-Man ...but this still remains a good answer. Commented Aug 7, 2016 at 2:04