5 Tips for Managing Debian Packages

by Joe Brockmeier

Debian's package tools makes it easy to install and manage packages. For more complex tasks, however, tools are not as well-advertised. Here are five options worth checking out.

If you've ever thought "there should be a command that does X" for Linux, there probably is. Finding it, however, is not always easy. This is especially true when managing packages on Debian-based systems.

Debian's package tools (dpkg, the APT suite and utilities like aptitude) make the basics of installing and managing packages very easy. When you want to do more complex things, however, they're still easy(ish), but the options or tools you want are not as well-advertised.

One thing that is often useful is to know why a package was installed. To find out, we want to use the aptitude utility, which will provide this very easily and quickly. Use aptitude why packagename to find out what package requires or suggests the package.

If you want to install packages that have been "kept back," you'll often hear people suggest that you use dist-upgrade instead of upgrade. However, a better way to do this -- without carrying a bunch of updates forward that you may not want, is to use aptitude instead of apt-get.

Occasionally, you must know what package a file belongs to, or what files are in a package. For a file that's installed, use dpkg -S filename. For example, if you don't have Sendmail installed and want to know what package owns the symlink for /usr/lib/sendmail, you can run dpkg -S /usr/lib/sendmail. In my case, this returns:

postfix: /usr/lib/sendmail

What if you want to know what package would install a file? That's a job for apt-file. Note that this utility may not be installed by default. You'll also need to update its cache by running apt-file update. Then run apt-file filename that you want to see. The more specific you can be, the better. If you look for a single string that's likely to be in many filenames (like "vim"), you'll get quite a few results. If you look for something very specific like /usr/lib/xml2Conf.sh, then it will provide only one result. So if I search for /etc/apache2/apache2.conf even on a system without Apache installed, it will tell me that the package I'm looking for is apache2.2-common.

Last, but definitely not least, let's look at saving a list of all installed software. Say you want to do a clean install of Debian (or a Debian derivative) to upgrade rather than apt-get dist-upgrade, but you don't want to figure out by trial and error what packages you had before -- simply run dpkg--get-selections, and you'll see a full list of packages that are installed. Here, I also notice that my Linux Mint desktop has more than four times as many packages installed as my Debian server.

But what about restoring the packages? That's easy. Run dpkg--get-selections > installed-packages.txt. When you have the clean system, run dpkg--set-selections < installed-packages.txt. Do be sure to back this file up before doing the install, of course.

While I tend to be partial to Debian packages, there's no reason Debian users should have all the fun. Next week, I'll take a look at tips for using RPM and Yum.


Follow ServerWatch on Twitter

This article was originally published on Tuesday Jun 14th 2011
Mobile Site | Full Site