Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Feb 2003 08:29:36 -0500
From:      "Brian T. Schellenberger" <bts@babbleon.org>
To:        Gordon Broom <gjbroom@alumni.uwaterloo.ca>, ajs@labs.mot.com
Cc:        freebsd-stable@freebsd.org
Subject:   Upgrading ports and such
Message-ID:  <200302270829.36028.bts@babbleon.org>
In-Reply-To: <58951.1046312634@selfstyled.dyndns.org>
References:  <58951.1046312634@selfstyled.dyndns.org>

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

FWIW, I have found only one way to update my ports / packages and get 
things to work reasonably realiably:  I completely wipe out my old 
system and replace it when I choose to upgrade at all.

It would be nice if this were easier, but no matter how clever FreeBSD 
gets the problems of different packages and ports at different points 
in time wanting different library versions is a tough nut to crack.

Any time you partially upgrade, you wind up with parts of the system 
from one point in time and other parts from another point in time, and 
I'm not sure whether this ever *can* be made to always work quite right 
when using shared libraries.  At the very least I think that some more 
sophisticated system for seeing whether software has the "right" 
version of a library, and better support for multiple "close" versions 
of given library would be required to get this to work -- something 
beyond the scope of the ports/packges system.



- - - - - - - -

Anyway, this is how *I* do it:

pkg_info -aI > pkg_list
pkg_delete -a

Inevitably, some things don't get properly deleted by this process, so I 
take advantage of the opportunity clean things up and just wipe out 
/usr/local entirely.  (I actually keep /usr/local/src and 
/usr/local/etc in a separate partition so that they survive this 
process.)

and then

edit the pkg_list file to delete the version numbers and descriptors, 
and add  "pkg_add -r"  to the start of each line.

Then I delete the lines for any ports that I have local patches for, use 
non-default options with, or know I need to build from ports for some 
other reason.

Having done that, I start up "script", so I can see the results, and 
"source" (or "." for you sh/ksh folks out there) the file, so that I 
pkg_add all my packages back in.

Then I build from ports the "exceptions" noted above AS WELL AS any 
packages that failed to install (by examining the typescript file).

(And while I go through the typescript file I also take any "by hand" 
actions required by my packages.)

Finally, I go to /usr/local/src and build and install all my local 
software.


This process is long and slow (although not nearly as long as slow as it 
probably sounds; I can usually do the whole thing in a single evening, 
unless some HUGE package like KDE or Galeon fails badly), so I only do 
it occaisonally, but it is the only way I've had reasonably consistent 
success.

Even so, it sometimes fails -- the mozilla problem was my major failure 
this time around -- but since everything else was reasonably up to 
date, I was able to fix up mozilla by just pkg_delete'ing fontconfig 
and building it from the port.  (Actually I wound up building mozilla 
and galeon from ports as well while I was trying to figure out what was 
going on, but I verified later that this was not necessary.)


I realize that "portupgrade" does wonderful things for a number of 
people and it may work well for those of you who update your whole 
systems weekly or so, but I have had very little luck with it myself.

My system obviously won't work well for those of you who have local 
patches for most of the system; I only have a local patches for a 
couple ports and take the default options on all but perhaps one port.

But I find it works better for me to just keep my system "perfectly 
stable" for perhaps a six-month stretch and then update everything all 
at once.

With rare exceptions I can update the system *itself* more frequently 
(though often I don't even do that), but my luck with building ports 
"piecemeal" has been attrocious.

And of course I always update the kernel & world just before I update 
all my ports and packages.


PS: Building everything from ports would of course be even nicer in a 
number of ways but it would just take bloody forever with the "total 
replacement" approach I use, especially since I use X and KDE for my 
desktop but Galeon for my web browser.  Just building X, KDE, and 
Galeon from ports literally takes days on my system.

Just one man's experience.


PPS: This system is obviously badly suited to a server system due to the 
extended downtime required.  However, I believe that all of the major 
probelms I've had with mismatched versions have always involved pieces 
(like the recent galeon/mozilla troubles) of the X-based user 
interface, not any of the basic "server" applications.  Many of the 
basic servers, of course, are part of the base system, anyway, and *it* 
is an absolute dream to upgrade.

And those that are not are far less tangled up in a complex web of 
interacting libraries that are themselves built from ports, so for a 
server system I think that partial upgrades would work fine.



-- 
Brian, the man from Babble-On . . . .   bts@babbleon.org (personal)

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




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