How can I display the list of all packages installed on my Debian system?

How can I get the list of all packages installed on my Debian system (I know this one is easy)? And also a list of all packages marked as manual? I am thinking about system upgrade, but I can't remember all these things I installed over the years :)


Solution 1:

Getting the list of installed packages is simple:

dpkg --get-selections | grep "[[:space:]]install$" >  installed_pkgs

You can later reinstall the packages in the list using this command:

dpkg --set-selections < installed_pkgs
sudo apt-get -u dselect-upgrade

If you've used aptitude exclusively to manually install packages, it is very easy to get a nice list of manually installed packages. Otherwise, this list will include both packages you installed, and their dependencies.

In either case, read through this article and comments for a coherent solution to generating the list of manually installed packages: Cleaning up a Debian GNU/Linux system.

You might find deborphan and debfoster of help in maintaining this list in future.

Solution 2:

dpkg -l

to list all installed packages.

Solution 3:

Here's how I would do it. As root, run the following:

dpkg --get-selections | sed 's/\t.*//' > packages-list.txt

This will produce a nice, clean list of installed packages, perfect for using with apt-get install.

Or a crude way to get a list of the packages you have manually installed with aptitude you can grep the logs with something like

zcat /var/log/aptitude.* | grep INSTALL] && cat /var/log/aptitude| grep INSTALL]

(But beware, installs with aot-get or dpkg will not get recorded here, plus logrotate might have archived part of the log, which this method will not pick up!)

Solution 4:

dpkg -l will list installed packages, as suggested.

I suggest to use upgrade-system for package upgrade, as it (wrapping deborphan) will purge away old un-needed packages too. This takes your system reasonably both up-to-date and clean.