Continuing the theme of minimal Fedora installs, I had a go at visualizing RPM dependencies and the size of those dependencies.
This problem is harder than I thought. The pretty filelight diagrams in my last post are possible because filesystems are simple trees (if you discount hard links).
However package dependencies are directed graphs, often containing loops and diamonds. If
pam pulls in
cracklib-dicts, that’s not good because
cracklib-dicts is big. But if it was pulled in by another package already, then
pam got it “for free” so do we need to worry? You can massively change your views on whether a particular package is excessively large just by changing the way you divide up these shared dependencies between packages.
What I’m working on is a more interactive tool that will let you explore these possibilities — so you will be able to “remove” a dependency and see how that changes the situation. Also you should be able to explore different ways of dividing up shared deps.
That part is not written yet, but I do have a visualisation of the dependencies of some packages already. Please keep in mind that the width of each bar is the incremental cost of the dependency (in terms of all extra data that it pulls in) and it does not mean that a particular package is bloated or excessive.
The rpmdepsize program is an ad-hoc mixture of python and OCaml. Caveat emptor.