There are two ways for current users of FreeBSD to get there. The
easiest way is to back up your current data and install from scratch.
Because of the significant changes, it's no shame to go this route.
Only if you are brave and have some time to fiddle with things should
you try a code upgrade using buildworld
. For those of you
so willing, here are my recommendations.
One of the most important habits to develop is reading the
UPDATING
files you get with every CVSup download you do.
For updating your core system code (see this
tutorial for details), the first file replaced is
/usr/src/UPDATING
. While the jargon can be daunting to the
FreeBSD novice, I encourage you to read through it more than once or
twice. Sometimes things of that nature just go click after
trying again. The various comments are listed in reverse chronological
order, latest at the top. For example, the current file has this entry
added last:
20051101:
FreeBSD 6.0-RELEASE
The date is parsed so: year (4 digits), month (2 digits) and date (2 digits) to give us November 1st, 2005. The announcement for that date is the official release of 6.0. Here's another interesting item down a ways:
20050610:
Major changes to network interface API. All drivers must
be
recompiled. Drivers not in the base system will
need to be
updated to the new APIs.
On June 10th this year, the FreeBSD released a change to the
networking APIs. As part of the updating process, the warning tells you
if you downloaded any special networking drivers from the
ports system previoiusly, you need to reinstall them. The usual
method is to navigate to the proper subdirectory in the ports tree
where you first installed the driver, run the command make
deinstall
followed by make install
. That should
rebuild the package in question from the new code.
We've covered the system rebuild already, and only outline it here:
cd /usr/src
make buildworld
make buildkernel
make installkernel
reboot
shutdown now
cd /usr/src
make installworld
mergemaster
reboot
When the system is running again, we move on to the next step.
Within the ports system itself, when you update the ports tree, you'll
need to check out /usr/ports/UPDATING
for warnings similar
to updating the core system. The layout is about the same. Here's the
item that caught my attention:
20051105:
AFFECTS: all users of gnome/glib/gtk
AUTHOR: gnome@FreeBSD.org
GNOME has been updated to 2.12 and gtk/glib to 2.8.
DO NOT USE portupgrade(1) to update your ports. Instead,
use
the gnome_upgrade.sh script from
http://www.marcuscom.com/downloads/gnome_upgrade212.sh
code>
Notice we have two headings: AFFECTS
and
AUTHOR
. While the second allows you to contact the author
of the note if necessary for additional information, the first should
be obvious. Indeed, unless you are running on the console alone, this
will apply to you, since it's almost impossible to run a desktop system
without using the GTK/Glib libraries.
It's simple enough to download the script (linked here
for your convenience). I chose to run it from /root
, which
is root's home directory. Since the script is not a command in the
system, and thus not in your PATH
, you'll have to let the
commandline know where it is. Be sure to put the ./
("in
this directory") in front of the script command:
./gnome_upgrade212.sh < /blockquote>
You will be warned to shut down any application which uses GTK, but it's best simply to drop out of the X server completely. If you are running a graphical login at startup, then you should move to a console by hitting
CTRL+ALT+F2
, login asroot
and type in the commandinit 3
. Then when finished, on the same console typeinit 5
to restart the graphical login. For those not running a graphical login, just log out of your window manager/desktop. Log out of your user account and into theroot
account.When running the script, the first thing I ran into was a complaint that
/var/temp
was not large enough for the script to compile a log. The message was:"ERROR: Not enough space in /var/tmp to log the upgrade. Please set the MC_TMPDIR variable to a location that has at least 200 MB of free space, then restart the upgrade."
My answer was to make a backup copy of the script, then open it in an editor and scroll down to where the variable
MC_TMPDIR
was defined. I changed it to/tmp
like this:MC_TMPDIR="/tmp"
blockquote>and tried again. This worked fine.
The script will procede to indentify all the packages dependent on GTK and Glib. Then, after updating those two, it will rebuild everything identified. It will include all of KDE if you have that. It will also take all day on most machines. The feedback is fairly limited, but it will list each package according to its place in the ports tree, followed by its place in the list order.
Another issue I ran into was with Gnomesword. Something in the upgrade to GNOME 2.12 breaks that package, and it won't rebuild. The script was stopped at that point. I ran the script with the
--help
flag and got a message with clues how to bypass such things. In this case, the trick was to add the switch-k
so the script would keep going after Gnomesword failed. Since I chose to heed the message and restart with the list of completed packages, mine looked like this:./gnome_upgrade212.sh -k -restart /tmp/gnome_upgrade_lst.AS5jKY
If you get a similar message, just remember the pointer on the FreeBSD console should work perfectly, and looks just like a graphical arrowhead pointer you might find when running X. Simply highlight the portion of the message between the quotation marks (without the quotation marks), then click the middle button to paste back to the command line. You should still be able to navigate up and down the line to make necessary changes before you hit
ENTER
. Unlike the old DOS days, you also need not run the cursor back to the end of the command to execute. The cursor can be anywhere in the command.If you have Gnomesword, save yourself the trouble and simply uninstall it before you start. I don't have a list of other packages similarly broken by the upgrade, so pay attention to error messages. If all else fails, you can find instructions on how to get help.
When the script is complete, it will tell you it was successful:
"Congratulations! GNOME has been successfully upgraded. Please refer to http://www.FreeBSD.org/gnome/ for a list of known issues, FAQ, and other useful resources for running GNOME on FreeBSD.
At that point, you should be ready to go. Restart X and get back to work. After all, isn't that why we run FreeBSD?
Ed Hurst is Associate Editor of Open for Business. Ed runs a computer support ministry in Oklahoma City. He loves computers, runs FreeBSD and GNU/Linux and reads all sorts of things. You can reach Ed at ehurst@ofb.biz.