Full binary upgrade with pkgng 1.0-beta7
My laptop (a small eeepc 1000H) is running FreeBSD 8.2-RELEASE for a while now, I didn't upgraded it to 9 because it would have taken eons to rebuild all the packages I use on this laptop.
Of course this laptop has been converted to pkgng long time ago, and I'm happily using it in a full binary way: building packages and preparing pkgng repositories on a build box using poudriere (ports-mgmt/poudriere).
In the git version of pkgng (what would become soon 1.0-beta7) one of the new feature is the ability to reinstall the whole set of packages. This allow us to now perform a full binary upgrade of the system.
Here is how I performed an upgrade from 8.2-RELEASE to 9.0-RELEASE without building anything on that small laptop:
Create a 9.0-RELEASE repository
First you need to prepare a set of packages for 9.0-RELEASE on poudriere:
# create the new jail:
$ poudriere jail -c -j eeepc9 -a i386 -v 9.0-RELEASE
# copy the make.conf from the old to the new jail:
$ cp /usr/local/etc/poudriere.d/eeepc-make.conf /usr/local/etc/poudriere.d/eeepc9-make.conf
# build the set of packages:
$ poudriere bulk -f ~/bulkeeepc -j eeepc9 -k
Now that your repository of packages is ready just expose it in your http server and you are done with that part.
Upgrading the laptop
Update to the lastest 8.2-RELEASE
You need to upgrade your 8.2-RELEASE to the latest version available if not already done (it contains a fix for freebsd-update which is necessary to perform the upgrade to 9.0)
$ freebsd-update fetch
$ freebsd-update install
Upgrade to 9.0-RELEASE
You can now upgrade to 9.0:
$ freebsd-update -r 9.0-RELEASE upgrade
$ freebsd-update install
$ reboot
$ freebsd-update install
Once you are here your system now upgraded to 9.0-RELEASE but still have some old shared object files, it is the moment when you should perform the upgrade of the packages.
Edit your /usr/local/etc/pkg.conf file and adjust the url of the PACKAGESITE to the new eeepc9 repository
$ pkg update
$ pkg upgrade -fy
you can now remove the old shared object:
$ freebsd-update install
In case you would have forgotten to perform the package upgrade, pkg-static is there to save your life, you can still do it now:
$ pkg-static update
$ pkg-static upgrade -fy
It seems to be so simple that i would like to test it. Great job and thanks Bapt !