September 29, 2009: ipkg support
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?
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
--mode. Current supported options are
arch (which graphs your installed packages),
arch-repo (which graphs every official package in the repositories),
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
pacgraph -help for the latest (sometimes experimental) options.
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.
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
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.