We recently shutdown one of many systems we have monitored by the free and open source Cricket monitoring software. I noticed we got no notification from Cricket about this shutdown, which was puzzling. Looking through the logs I saw this error message:
Can't load '/usr/local/lib/perl5/site_perl/5.16/mach/auto/RRDs/RRDs.so' for module RRDs: Shared object "libpixman-1.so.30" not found, required by "libpangocairo-1.0.so.0" at /usr/local/lib/perl5/5.16/mach/DynaLoader.pm line 190. at /usr/local/cricket/cricket/./collector line 32. Compilation failed in require at /usr/local/cricket/cricket/./collector line 32. BEGIN failed--compilation aborted at /usr/local/cricket/cricket/./collector line 32.
So it was clear that the pango library file libpangocairo-1.0.so.0 was looking for a pixman library file it couldn’t find. The first thing I did was check out which version of pixman we currently had installed:
steve@someserver-335: pkg info pixman pixman-0.32.4_2 Name : pixman Version : 0.32.4_2 Installed on : Mon May 5 15:30:07 EDT 2014 Origin : x11/pixman Architecture : freebsd:10:x86:32 Prefix : /usr/local Categories : x11 Maintainer : x11@FreeBSD.org WWW : http://www.freedesktop.org/Software/xlibs Comment : Low-level pixel manipulation library Shared Libs provided: libpixman-1.so.0.32.4 Flat size : 1.43MiB Description : This package contains the pixman library.
Ok, so now I was able to confirm that pango was trying to reference the old version (libpixman-1.so.30) of the pixman library, even though we have a newer version (libpixman-1.so.32.4) installed. Time to rebuild the pango port to update that reference.
$ sudo portmaster pango
And finally I ran the following to test Cricket out:
$ cd /usr/local/cricket/cricket $ ./collect-subtrees normal
All was back to normal!