Subject: Re: Package update disaster
To: Courtney R. Spencer <kerneld@mindspring.com>
From: Greg A. Woods <woods@weird.com>
List: netbsd-users
Date: 10/08/2004 18:57:22
[ On Wednesday, October 6, 2004 at 17:16:37 (-0400), Courtney R. Spencer wrote: ]
> Subject: Re: Package update disaster
>
> I've been bitten by this many times, and have not found an easy 
> solution.

I have a very easy solution.... but it's a "hard" solutions for
some/many people to get their heads around:  static linking.

I static-link all my base system (*) and as many packages as I possibly
can and I've made minor tweaks to the pkgsrc system (and some of the
customized pkgsrc build tools, such as libtool) so that library
dependencies for static-linked applications are declared "build-only"
and thus are not recorded for the parent package.

This makes it trivial for me to de-install almost any library package
without also having to de-install a whole bunch of other packages.

There are of course a few "dynamic-only" applications which (often
insanely) insist on being able to load plugin code (e.g. Mozilla and
friends, as well as even some of the 3rd-party libraries it uses), but
that only means I have to de-install these few big ugly packages when I
have to rebuild one of the libraries they dynamically load.

(*) On systems with enough RAM (and enough disk), i.e. almost any system
sold within the last ten years and which has been reasonably upgraded
with modern disks and enough RAM for modern applications, static-linking
has enormous performance benefits beyond the obvious management benefits
for production systems, especialy servers, (i.e. beyond just avoiding
the inter-twined beyond belief interdependencies of third-party
software).  Systems like NetBSD which exclusively use shared libraries
and which have no pre-binding support, waste enormous resources
(re)doing the dynamic loading and linking every time a program is
started or re-started.  In typical unixy applications where relatively
small programs are (re)started very frequently this overhead is quite
noticable and annoying.  Luckily NetBSD itself can relatively easily be
static-linked across the board, and of course it still has excellent
support for building and running static-linked add-on software too.

-- 
						Greg A. Woods

+1 416 218-0098                  VE3TCP            RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>          Secrets of the Weird <woods@weird.com>