Upgrading libs with many dependent ports

Kevin Oberman kob6558 at gmail.com
Wed Jan 18 02:43:29 UTC 2012


On Tue, Jan 17, 2012 at 6:09 PM, Matthew D. Fuller <fullermd at over-yonder.net
> wrote:

> On Tue, Jan 17, 2012 at 05:51:11PM -0800 I heard the voice of
> Kevin Oberman, and lo! it spake thus:
> >
> > The manual method would be to install sysutils/bsdadminscripts and
> > use a command like `pkg_libchk | grep -E "xcb-.+.so" | sort >
> > tmpfile` to provide a list of ports that actually are linked to the
> > libraries in question.
>
> FWIW, I some years ago wrote up a quick&dirty perl script to find
> missing or out of date libs.  It pulls out and warns about missing
> libs, stuff in compat/pkg (held over after upgrade by
> portupgrade/portmaster), and stuff in the base /usr/lib/compat (handy
> when crossing major versions, and potentially other big upheavals).
> It's only about a k; I'll attach it.
>
> I pretty much wind up ldd'ing /usr/local/{bin/*,sbin/*,lib/*.so*} and
> running the results through the script.  Usually something like `cd
> /usr/local/bin ; ldd * > /tmp/ldd.bin ; lddchk.pl < /tmp/ldd.bin`.
> That tells me the files; then I can use my brain or pkg_which to tell
> me which packages are involved.  I'm happy with that level of
> automation, because I like keeping my brain firmly in the loop on such
> things, but it wouldn't be too hard to extend it to do its own walks
> over the filesystem, etc.
>

Take a look at pkg_chklib. It is  quite optimized and runs multiple checks
in parallel so that
you can run it on 1100 ports in about 1.5 minutes. Here is a sample o this
output:
%pkg_libchk | grep -E "xcb-.+.so" | sort
gok-2.30.1,1: /usr/local/bin/create-branching-keyboard misses
libxcb-atom.so.1
gok-2.30.1,1: /usr/local/bin/create-branching-keyboard misses
libxcb-aux.so.0
gok-2.30.1,1: /usr/local/bin/create-branching-keyboard misses
libxcb-event.so.1
gok-2.30.1,1: /usr/local/bin/gok misses libxcb-atom.so.1
gok-2.30.1,1: /usr/local/bin/gok misses libxcb-aux.so.0
gok-2.30.1,1: /usr/local/bin/gok misses libxcb-event.so.1
nautilus-open-terminal-0.18_4:
/usr/local/lib/nautilus/extensions-2.0/libnautilus-open-terminal.so misses
libxcb-atom.so.1
nautilus-open-terminal-0.18_4:
/usr/local/lib/nautilus/extensions-2.0/libnautilus-open-terminal.so misses
libxcb-aux.so.0
nautilus-open-terminal-0.18_4:
/usr/local/lib/nautilus/extensions-2.0/libnautilus-open-terminal.so misses
libxcb-event.so.1
vlc-1.1.13,3: /usr/local/lib/vlc/plugins/control/libglobalhotkeys_plugin.so
misses libxcb-keysyms.so.1
vlc-1.1.13,3:
/usr/local/lib/vlc/plugins/video_output/libxcb_window_plugin.so misses
libxcb-keysyms.so.1
yelp-2.30.2_1: /usr/local/bin/yelp misses libxcb-atom.so.1
yelp-2.30.2_1: /usr/local/bin/yelp misses libxcb-aux.so.0
yelp-2.30.2_1: /usr/local/bin/yelp misses libxcb-event.so.1
%

And it is already in ports.
-- 
R. Kevin Oberman, Network Engineer
E-mail: kob6558 at gmail.com


More information about the freebsd-ports mailing list