Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Sep 2001 00:15:52 -0400
From:      Andrew J Caines <A.J.Caines@halplant.com>
To:        Mike Meyer <mwm@mired.org>, kbstew99@hotmail.com
Cc:        questions@freebsd.org
Subject:   Re: Tracking down libpng.so.4 package dependency
Message-ID:  <20010929001552.V39250@hal9000.servehttp.com>
In-Reply-To: <15284.53157.808642.644254@guru.mired.org>; from mwm@mired.org on Fri, Sep 28, 2001 at 02:29:41PM -0500
References:  <15284.53157.808642.644254@guru.mired.org> <3BB4D224.99CA89CF@owt.com> <103067005@toto.iv> <15284.53157.808642.644254@guru.mired.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Mike,

> > I've updated all the packages in /var/db/pkg/png-1.2.0/+REQUIRED_BY [2],
> > which I realise is probably circular.
> If you'd saved the one from the previous version, it wouldn't have
> been :-).

Yup.

> Ugh - why didn't the last paragraph get wrapped?

User error. Sorry.

> Question one: What is a "forced udpate"?

portupgrade will not build and install a port if the current version is
already installed. --force tells it to go ahead anyway.

> Are the ports fully cleaned before you make them?

Yes. For paranoia's sake I manually cleaned before building stuff with a
few dependencies.

> You can get a list of all the files in the ports tree that reference
> png like so:
> cd /usr/ports
> find `pkg_info -aoq` -type f | xargs grep '[^.]png'

This finds a few with direct dependencies, but it's a bit noisy and didn't
give any clues.

> If you find a file in a port that you haven't updated, you might try
> updating that port, then rebuilding the galeon port.

I think galeon itself, along with all but maybe one package, are built
right, however the cascading dependencies are including that one thing (a
.so I presume) which still links to libpng.so.4.

By way of evidence:

# ldd `which galeon-bin` | egrep png
        libpng.so.5 => /usr/local/lib/libpng.so.5 (0x283d8000)
        libpng.so.4 => not found (0x0)

What a reall need is a treelike ldd output. From ldd(1)

     ldd displays all shared objects that are needed to run the given
     program. Contrary to nm(1), the list includes ``indirect''
     dependencies that are the result of needed shared objects which
     themselves depend on yet other shared objects.

For example,

# ldd -r /usr/bin/dyno
/usr/bin/dyno:
        libfoo.so
	libbar.so
	  libbaz.so.2
	libbig.so.5
	  libabc.so.2
	    libdef.so.1

Kent,

> There was an example given for png a while back it went like
> portinstall -irf png
> This was to check all of the installed ports that use png and make them
> consistent.

That appears to build and install the port along with with all packages
which depend on the one built. This would be a huge build, which I'd
prefer not to start until I'm ready to give up on a cleverer solution.

This is almost equivalent to how I usually use portupgrade (--new
--upward-recursive --recursive --sudo --uninstall --verbose), but with
force for everything.


-Andrew-
-- 
 _______________________________________________________________________
| -Andrew J. Caines-   Unix Systems Engineer   A.J.Caines@halplant.com  |
| "They that can give up essential liberty to obtain a little temporary |
|  safety deserve neither liberty nor safety" - Benjamin Franklin, 1759 |

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010929001552.V39250>