Date: Tue, 17 Jan 2012 18:43:27 -0800 From: Kevin Oberman <kob6558@gmail.com> To: "Matthew D. Fuller" <fullermd@over-yonder.net> Cc: ports@freebsd.org Subject: Re: Upgrading libs with many dependent ports Message-ID: <CAN6yY1uFbWq2foY-wp4ECeFJwLijFSso6AzNWpy-PgcwiJor_g@mail.gmail.com> In-Reply-To: <20120118020928.GE509@over-yonder.net> References: <CAN6yY1t7xAdWvGQvDQMksfSA2E6wdFryd0BUFKzNGvqUOhWZsg@mail.gmail.com> <20120118020928.GE509@over-yonder.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jan 17, 2012 at 6:09 PM, Matthew D. Fuller <fullermd@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@gmail.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAN6yY1uFbWq2foY-wp4ECeFJwLijFSso6AzNWpy-PgcwiJor_g>