On 23/02/2014 02:40, Kevin Oberman wrote: > On Sat, Feb 22, 2014 at 5:38 PM, LuKreme <[email protected]> wrote: > >> > On 13 Feb 2014, at 22:46 , Kevin Oberman <[email protected]> wrote: >>> > > An easier way is to install sysutils/bsddfminscripts and use pkg_libchk >> > to >>> > > find what needs to be reinstalled. I use the command: >>> > > pkg_libchk -o | grep icu | cut -d: -f1 | sort | uniq > ~/reinstall-ports >>> > > portmaster -D `cat ~/reinstall-ports` >> > >> > I finally got pkg installed, so, moving on to this and I have a question, >> > what is the purpose of the `grep icu` pipe? >> > > pkg_libchk (part of sysutils/bsdafminscripts) tests all libraries and > executables installed by all ports for non-existant linked sharables. In > this case, the purpose is to get a list of ports that still link to the old > version of libicu. So pkg_libchk lists ALL files from ports that have links > to the old libicu and then trims it to just the port name, sorts it, and > removes dupes.
With pkg(8) installed, this might be better spelled as eg,
# pkg shlib libicuuc.so.52
which will tell you those packages that have binaries that load that
specific shlib. To find all the consumers of any shlib provided by the
icu-52.1 package:
# pkg info -qb icu-52.1 | sed -e 's/.1//' | xargs -L 1 pkg shlib -R
The sed stuff is due to the lingering legacy effects of the shlib ABI
version being required to be a single integer value, whereas nowadays
more complicated version numbering schemes seem to be all the rage.
pkg-shlib could do with growing some different matching algorithms and a
less chatty mode for use in scripting.
Cheers,
Matthew
--
Dr Matthew J Seaman MA, D.Phil.
PGP: http://www.infracaninophile.co.uk/pgpkey
JID: [email protected]
signature.asc
Description: OpenPGP digital signature
