---
name: "magpie"
section: "8"
platform: "linux"
package: "magpie"
version: "0.5-6"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/magpie"
---

# magpie(8)

Debian reference librarian

## NAME

magpie - Debian reference librarian

## SYNOPSIS

**magpie**

## DESCRIPTION

**Magpie** is a reference librarian for Debian systems which should be run overnight by cron (8). It reads the  [**apt**(8)](/apt/8.md) and [**dpkg**(8)](/dpkg/8.md) databases and can perform additional tasks specified by dynamically loaded modules.  It then generates a number of web pages that  should make it easy to answer questions such as:

-

  "I've been hearing a lot about MP3 and XML lately.  What packages should I consider loading?"

-

  "Help!  I'm running out of disk space!  What packages will give me the most "bang for the buck" if I purge them?  What other packages will I have to delete at the same time?"

-

  "I see that a new 'foobar' package is available.  Before I upgrade, did I make any local changes that I need to preserve?"

-

  "What suid programs are **not** associated with a package?"

**Magpie** first creates extensively cross-referenced reports under **/var/cache/magpie.** These "reference stacks" provide an individual document with the following details about every package:

-

  Name\
   Descriptive summary\
   Description\
   Version\
   Section and category\
   Priority\
   Filename\
   Maintainer (cross-linked)\
   Pre-dependency list (cross-referenced)\
   Dependency list (cross-referenced)\
   Reverse dependency list (cross-referenced)\
   Suggestion list (cross-referenced)\
   Reverse suggestion list (cross-referenced)\
   Recommendation list (cross-referenced)\
   Reverse recommendation list (cross-referenced)\
   MD5 checksum\
   Package size\
   Known bugs (link to http://debian.org)

If the package is installed, these documents contain several aditional fields:

-

  Installation status\
   Installed size\
   Conffiles\
   Results of running [**md5sum**(1)](/md5sum/1.md) against package's md5sums list.

**Magpie** always writes the package lists in tabular format.  Packages are normally listed one to a line, but acceptable alternatives are grouped.  Each line includes the package name, restrictions (if any), summary, and the installed version (if known).

**Magpie** then writes several annotated indexes containing the package name, version, installation status, and description (not summary).  The indexes include:

- by section

  All packages are listed, grouped by section and category, then collated by name within each priority.

- by priority

  All packages are listed, grouped by priority and section, then collated by name within each category.

- by task

  All "task" packages are listed.

- installed packages

  All installed packages are listed, collated by name within each category.

**Magpie** then writes several unannotated indexes containing the package name, installation status and descriptive summary.  The indexes include:

- by name

  All packages are listed, collated by name.

- by maintainer

  All packages are listed, grouped by maintainer, then collated by name.

- by source

  All packages are listed, grouped by source package then collated by name.

- by size

  All packages are listed, sorted by decreasing package size.

- by MD5 checksum

  All packages are listed, sorted by md5sum.  Even reference librarians need to cut loose sometimes.

**Magpie** then writes a number of "keyword in context (KWIC)" indexes.  Due to popular demand, to say nothing of the sheer size of a complete KWIC index, these indexes are now annotated indexes tagged by keywords.

**Magpie** concludes by writing several special reports.  The reports include:

- conffiles

  All registered "conffiles"

- checksums

  All packages containing files whose MD5 checksums do not match the declared value.  (N.B., this is not a replacement for tripwire!)

- setuid files

  All files with the "setuid" bit set, cross-referenced to the package which contains them (if identifiable).

**Magpie** can load modules at run-time, so this list may not be exhaustive.

Finally, a "magpie" is a medium sized bird in the American West which is well known for collecting shiny bits of trash for its nest.

## SEE ALSO

[**apt-cache**(8)](/apt-cache/8.md), [**dpkg**(8)](/dpkg/8.md), [**cron**(8)](/cron/8.md), [**tripwire**(8)](/tripwire/8.md)

## BUGS

**Magpie** does not yet allow specification of target directory or username from command line.

**Magpie** does not yet support dynamically loaded modules.

**Magpie** does not lock the [**apt**(8)](/apt/8.md) or [**dpkg**(8)](/dpkg/8.md) files.

**Magpie** does not lock the generates a surprising amount of data.  Since most of the output will never be viewed, the program compresses the output.  You should still have approx. 30 MB available for the Debian 2.2 packages.

**Magpie** uses a parser constructed by [**bison**(1)](/bison/1.md) and [**flex**(1)](/flex/1.md). The parser is very fast, but very easily confused by unexpected  values.  Known problems include the new non-US format, old  [**dpkg**(8)](/dpkg/8.md) data, and unofficial packages with strange section information. The problem can usually be fixed by editing the database.

It takes over 10 minute to cross reference 4500 packages (600 installed) on my P-II 300 MHz system.  Only 10-15 seconds is required to read and  parse the database; about a minute is spent generating the reverse lookups  and the rest is spent cross-checking the database and rest of the system.

The detailed pages can be hard to read under [**lynx**(1)](/lynx/1.md) due to the extensive use of tables. I have not tested the pages under  **MSIE**(6).

## AUTHOR

This manual page was written by Bear Giles \<bgiles@coyotesong.com\>.
