Subject: Re: bulk-build list
To: Dr. Rene Hexel <rh@vip.at>
From: Frederick Bruckman <fb@enteract.com>
List: tech-pkg
Date: 05/25/2001 19:06:08
On Fri, 25 May 2001, Dr. Rene Hexel wrote:

>   There is one thing that would ease up things a lot: in-place package
> updates.  As Jason suggested earler, what we'd need to have is some sort
> of 'pkg_update' or 'pkg_add -u' that keeps older versions of shared
> libraries.  This way, a user could update a package like 'png' without
> deinstalling and reinstalling a bunch of dependent packages.

I've been experimenting with that. It'll be convienient at times, but
it's not a general solution for great networks of packages that
include shared libraries that depend on shared libraries that depend
on other shared libraries, which is where you'd want it want it most.
Even with ELF, the run-time linker doesn't really chase each symbol
down to the shared library that the shared library was linked against,
but rather concatenates the embedded paths and uses them to search for
the embedded library specs. So what happens is, you end up linking
against _both_ versions. Knowing that, "ld" emits a warning at link
time that, for example "libpthread.so.14 conflicts with
libpthread.so.13", and it's not at all clear to me which shared
library is going to supply any particular symbol. Consider:

fredb@fiona-> ldd /usr/pkg/bin/xmms
/usr/pkg/bin/xmms:
         -lm.0 => /usr/lib/libm387.so.0
         -lm.0 => /usr/lib/libm.so.0
         -lpthread.14 => /usr/pkg/lib/libpthread.so.14
         -lICE.6 => /usr/X11R6/lib/libICE.so.6
         -lSM.6 => /usr/X11R6/lib/libSM.so.6
         -lc.12 => /usr/lib/libc.so.12
         -lgmodule.13 => /usr/pkg/lib/libgmodule.so.13
         -lglib.13 => /usr/pkg/lib/libglib.so.13
         -lX11.6 => /usr/X11R6/lib/libX11.so.6
         -lXext.6 => /usr/X11R6/lib/libXext.so.6
         -lXi.6 => /usr/X11R6/lib/libXi.so.6
         -lintl.1 => /usr/pkg/lib/libintl.so.1
         -lgtk.12 => /usr/X11R6/lib/libgtk.so.12
         -lgdk.12 => /usr/X11R6/lib/libgdk.so.12
         -lpthread.13 => /usr/pkg/lib/libpthread.so.13
         -lgthread.13 => /usr/pkg/lib/libgthread.so.13
         -lxmms.1 => /usr/pkg/lib/libxmms.so.1
         -lmikmod.2 => /usr/pkg/lib/libmikmod.so.2
         -lz.0 => /usr/lib/libz.so.0
         -lxml.9 => /usr/pkg/lib/libxml.so.9

Amazingly, "xmms" seems to run fine, but I wouldn't want to distribute
this package!


Frederick