Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Sep 2007 03:50:49 -0500 (CDT)
From:      Lars Eighner <luvbeastie@larseighner.com>
To:        cothrige <cothrige@gmail.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Newbie questions about updating
Message-ID:  <20070907014230.K45407@qroenaqrq.6qbyyneqvnyhc.pbz>
In-Reply-To: <adb998e60709062235y629b7eedjd9e00de98432c313@mail.gmail.com>
References:  <adb998e60709062235y629b7eedjd9e00de98432c313@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 7 Sep 2007, cothrige wrote:

> assumption that one must run two cvsup operations with two separate
> supfiles to update both the core OS and the ports.  Am I understanding
> this correctly?

No.  It is not "must."  You "can" update your source and your ports tree
with one supfile.  You can add the line

ports-all tag=.

to either the standard or the stable supfile.  The tag=. part is vitally
important, because otherwise the tag from the system update will fall
through (being right now either RELENG_6 (for stable) or RELENG_6_2 (for
standard) and your whole ports tree will be deleted (because ports do not
have a tag and so there are not any that match either of the other tags). 
If you do this once, you will forever be prejudiced against doing it in one
operation.

Many people do it it two operations because they really are two different
things.

> Assuming I am, my main confusion concerns just how these two systems
> actually interact and relate to each other, and whether there are any
> requirements connecting updating each of them together?

There is no necessary, hard and fast, connection between the two.  If your
ports tree gets very, very stale, it will largely cease to work because
many (some) of the source files will disappear or their dependencies will
disappear or change.  Many of the applications in the ports were not written
to work specifically on FreeBSD by FreeBSD developers, but were written
variously to work on any generally sort-of-Unix-like system, any system with
a C++ compiler and so forth.  Theoretically ports in a very old tree should
build (FreeBSD keeps many old distribution files as a last resort), but as a
practical matter, many won't.  Occasionally there is a change in the
operating system that breaks some old ports, often because the person who
wrote the port was sloppy and took things for granted, but those things
changed.

> For instance, I have downloaded the FreeBSD 6.2 install discs and have
> finished the basic installation and setup.  Now at some point if I wish to
> update the ports does that mean I have to update the OS to a particular
> level?

No.  There certainly is no fixed point at which ports will become useless.
But someday 6,2 will no longer be supported (like years from now).  6.2
will still run on the machine you have got, and the ports you have installed
will still run on it, but much of the then current port tree will deal with
hardware you don't have and so forth.  When the Donovan's Brain Interface is
invented 6.2 won't support it and you will want it because it is easier to
think than to find your mouse (although I can think of an operating system
that is designed for people who have it the other way around).

General, upgrading the OS is a good idea about six months after the second
release of a major version number (i.e. when 7.2 or 7.3 is a release and is
about six-months old).

> If I don't want to run stable and use "tag=RELENG_6_2" will I
> be required to keep the ports as they have installed from the disc?

No.  In fact you shouldn't. (But as mentioned above, never use any tag with
ports except ".".)  Of course there are two different things here that you
might be confusing.  The ports tree, which is a skeleton for building
applications from scratch, and packages, which are pre-built binaries for
applications.

Here's the best way to install 6.2 starting with the CD release (assuming
you have internet connectivity which I guess you do since you mailed to this
list).

1.  Install 6.2 including source, but do not install Xorg.
2.  Install cvsup from a package or the ports, but do not install any other
     ports.
3.  Use cvsup to update the release source (use the standard supfile).
4.  Build and install world and the kernel according to instructions
     at the end of the UPDATING file in /usr/src
5.  Cvsup the ports tree using the ports-supfile.
6.  Install Xorg (and other applications you may want) from the ports tree.

Well, 5a is install ports management software from the ports-mgmt section of
the ports tree.  I use portupgrade because it is the way I have always done
things, but I hear some of the others may be better.  You can use the -N
switch with it when you are installing fresh ports instead of just
upgrading.

6.2 is now fairly static (but it isn't STABLE) so you will only rarely see
anything happening when you cvsup with the standard supfile.  If anything
does happen it is usually error-correction/diasater-avoidance related, so you
probably should rebuild the system (or at least read the UPDATING file to
see if the changes really affect something that is important to you).

The ports tree, on the other hand, will usually have dozens of updates every
day.  After the usually flurry of basic applications you install at first,
you probably should update the ports tree, read the ports UPDATING file and
upgrade all your ports (like portupgrade -a) before you install any major
application. The main object is to keep the ports in synch with other ports. 
There are just a few ports that do things (like build loadable kernel
modules) which just won't work if they are too out of synch with the
operating system, but these are few and far between.

> Is there any connection between how current the ports are and how
> current the OS is?

> One of the things which caused me to wonder about this was that some
> time back I tried FreeBSD out for a while and ran into some oddities
> concerning the ports system.  When I first finished setting things up
> I could install packages using "pkg_add -r", but noticed that after
> updating the ports I could no longer do that.  That struck me as odd,
> and because of it I always had a suspicion that I had broken the
> system with my out of whack updates (I did not move up to stable at
> that time) but I just never could really find out if that were so.

More than likely the packages were broken.  Often the available packages are
way out of date or do not exist (because of licensing restrictions or no one
got around to building them).  Packages depend to much greater extent on the
OS release.

> One last newb question is concerning cvsup itself.  In reference to
> ports is there a difference, in the end, between this and portsnap?
> Do they result in the same ports?  I am sure this is answered
> somewhere, but the handbook and other sites seem to take a somewhat
> ground-eye view of how to use them but don't dwell much on the
> mysteries behind what they do and how they may differ.

Portsnap is a different system from cvsup.  They should get approximately
the same tree (not exactly the same because the ports tree changes so
rapidly).  Portsnap is usually run automatically (as a cron job) every few
days, or oftener if you are really complusive.  It is said to save
bandwidth if used this way, so if you are administering a large system, it
probably pays off.  If this is your home desktop, you probably aren't adding
or upgrading ports every day (but there are always some people who spend
more time customizing their cars than riding in them) and cvsup is perhaps
better suited for occasional spells of upgrading.


-- 
Lars Eighner
http://www.larseighner.com/index.html
8800 N IH35 APT 1191 AUSTIN TX 78753-5266




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