The debian package management system is something I’ve been using for years, and it’s served me well for all those years. For the first decade I rarely needed to use more than the common
apt-get install or
dpkg -i package.deb. Listing the installed packages with
dpkg -l has been useful too, but apart from
apt-cache search those were all the commands I needed most of the time.
Over the past 5 years I’ve been using slightly more complex queries to figure out information about packages I’ve installed. Working at a company where we are deploying and supporting debian servers on a regular basis has meant it’s been useful to poke about the .deb infrastructure a litle more. In truth most of the time I just use 2 commands, but they seem to get me through most of what I want to do.
If I don’t know which package a program comes from I can use dpkg-query with the -S flag.
$ dpkg-query -S /sbin/ss iproute2: /bin/ss
To figure out what is provided by a package I can use the -L flag.
$ dpkg-query -L iproute2 | grep etc /etc /etc/iproute2 /etc/iproute2/rt_protos /etc/iproute2/rt_tables /etc/iproute2/ematch_map /etc/iproute2/rt_realms /etc/iproute2/rt_scopes /etc/iproute2/rt_dsfield /etc/iproute2/group /usr/share/man/man8/ip-netconf.8.gz
That’s also useful for checking a package is still fully installed,
for f in `dpkg-query -L python-lxml`; do if [ ! -e $f ]; then echo Missing $f; fi; done
Of course there are other commands that I use periodically, but these are the ones I’ve been using frequently enough to start remembering by heart.