Package maintenance at the command line


For some users, the Debian Popularity Contest (popularity-contest) is a controversial package. The popularity-contest package is usually installed during the installation of a Debian system and sets up a regular cronjob to report on package usage to the project from which user statistics are tabulated. This information is used to decide which packages go into the next release. However, some users consider it a violation of privacy, which is why the installer gives the option of installing it. One argument in favor of popularity-contest is popbugs (Figure 8). This script correlates the popularity-contest data from your system with the list of critical bugs from the Debian bug-tracking system. The results are a list of critical bugs customized for your system, which can save you scanning through a complete list. If the log is enabled but has collected no data, the generalized critical bug page is shown. By default, the results are displayed in a web browser, but the option --output=FILE writes the results instead to a file. If you decide this comparison could be useful but did not enable popularity-contest during installation, you can install it at any time like any other package.

Figure 8: With popbugs, you can correlate the most often used packages on your system with critical bugs.


If an attempted installation of a package results in broken packages, which-pkg-broke can be a useful tool for tracking down which related products might possibly be the problem. No options are available – just a history of past problems. This information may not be much use if the package whose installation attempt started the problem is related to dozens of others. Note, too, that a general release upgrade is listed as breaking packages (Figure 9).

Figure 9: When using which-pkg-broke, remember that a general release is listed as breaking packages, even though there was no difficulty.


Run by root, checkrestart (Figure 10) finds services that need to be restarted after a system upgrade that has added updated or new libraries, because the processes running still expect the old deleted versions. It can be run with --package (-p), so that only deleted package files are located, or with --all (-a), which may produce false positives such as a file in the /tmp directory. In addition, results can be edited using --blacklist=FILE (-b=FILE) to create a list of regular expressions to be excluded from the results. Still other ways to limit results are to exclude files associated with listed services with --ignore=SERVICE (-i=NAME) or process IDs with --excludepid=PID (-e PID). Output length can be controlled either with the usual --verbose option or with --terse (-t).

Figure 10: After a system upgrade, checkrestart shows which services need to be restarted.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Command Line: Debian Goodies

    The Debian Goodies collection offers a variety of time-tested scripts to help you manage Debian packages.

  • Command Line: apt-cache

    We take a look at apt-cache, an essential utility for command line-based package management.

  • Command Line – Package Management

    When human error stumps the Debian package manager, familiar tools like apt-get, aptitude, and dpkg can help restore functionality.

  • Housekeeping

    When it comes to weeding out unnecessary packages on your Debian system, debfoster lets you conveniently arrange all your housekeeping functions into a single command.

  • Evolutionary Tale

    Over the past 30 years, the apt family has played an important role in dependency resolution for Debian distros.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More