September 7, 2009: Explanation and illustration of dependency chain compression.
September 29, 2009: ipkg support

Original Debian support and --console Now with an interactive GUI. Package highlighting, better Debian speed, Red Hat support. Notes for packagers. Explanation and illustration of dependency chain compression. ipkg support Dark theme sample. Python3, new prettier spiral layout. Official release! Editable
version 7 & 8 of 12

 


A lightweight server.

My primary computer.

My old desktop.

It draws a pretty picture of your installed packages. Common uses include exploring dependency trees or finding hundreds of megs of useless packages.

To try it yourself, get the code, or install it from the AUR. Run pacgraph to generate an SVG. If Inkscape or imagemagick is installed it will also render a PNG. It might seem a little slow, but it's many times faster than Graphviz. Alternatively, run pacgraph-i to launch a simple tk GUI.

Right now Arch is the only well supported distro, but writing new loaders is pretty easy. Thanks to Carl Hamann, there is good support for Debian ( pacgraph -m debian ) and Red Hat ( pacgraph -m redhat ). These also work in derivative distributions like Ubuntu or Fedora.

Stuff supported from the command line:

Slow computer, or you want exact numbers? pacgraph --console

Custom colors? Each of these takes one color, such as

pacgraph -b "#808080" -l "#ffffff"

-b --background
-l --link
-t --top
-d --dep

Font size can be set with pacgraph -p 10 100 where the first number is the smallest point size, and the second is the largest.

Interested in how one package fits into your system? Use --highlight (followed by three colors and the package name) to draw attention to its dependencies and inverse dependencies.

Distro is chosen through -m / --mode. Current supported options are arch (which graphs your installed packages),arch-repo (which graphs every official package in the repositories), debian and redhat. Currently there are no full repository loaders for debian or redhat. The git version has ipkg support. This is commonly used for embedded Debian, and needed only two small tweaks. It will make it into the tarball once I can find my WRT54G and adequately test it

Check pacgraph -help for the latest (sometimes experimental) options.

 


Minimum dependencies for Gimp.

Arch-repo mode also lets you plot an arbitrary app's dependency trees. To generate the example shown, run pacgraph -m arch-repo gimp. You may specify multiple package names, to see how their dependencies overlap.

 


Before chain compression.

After chain compression.

Dependency chain compression requires a little explanation. C -> D -> E is a chain. These chains are very hard to draw, as there are a thousand wrong ways and only one good way. So pacgraph doesn't even try to tackle this hard problem, instead absorbing the dependencies into the parent. The graph generally looks prettier and easier to read if you compress the chains. More importantly, it makes the true size of programs much more apparent. Chain compression can be disabled in part (or entirely). Occasionally it is disabled automatically. For example, the illustration of Gimp would collapse into a single package (Gimp) if compression were not automatically disabled.

The cross platform support has been seeing more use. In case anyone wants to package it for a non-Arch distro, there are a few critical variables to set. In function parse(), the first line sets default_action. Right now this is arch, but any --mode option may be used, such as debian or redhat. For the interactive GUI (pacgraph-i), it needs to know the exact path of the pacgraph source, for the imp.load_source function. The default colors can also be set for both programs, to better match your theme.

For more info, check out the beta's thread or the github page.