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>