While reading Planet FreeBSD today Florent Thoumie pointed me to this post. The author is not happy they can’t update a single package they installed with FreeBSD 6.2-RELEASE to the latest version. The problem is they assume the ports collection follows the FreeBSD base.
The first point I noticed is they named 6.2-STABLE 6.2-CURRENT. This tells me they, while may have some experience in using the FreeBSD, don’t know enough about it’s structure. Next they attempt to remove Firefox. They then complain how other ports depend on Firefox. This is because Firefox provides the HTML rendering used by other ports and removing it manually then reinstalling the port is not the best way to update the port.
Next they get to the point of this posting, they attempt to build the Firefox port, find they have to update Xorg and complain this should have gone to 7-CURRENT first. The problem is there is no 7-CURRENT branch for the FreeBSD ports collection. 7-CURRENT is the name of FreeBSD built from the cvs HEAD branch. The ports collection is only tagged for releases (a tag is just a point along a branch). The best strategy is to keep all the ports as up to date as possible so each update is relatively small. It also appears they read the ports UPDATING file, as they pasted some id it to their post, but they didn’t realise they had to update the Xorg port. Sometimes you can get away with not updating a port’s dependencies, but not always. As the ports collection is not branched it is an all or none style update.
They then complain about pkg_add in remote mode. It’s broken due in part to the way FreeBSD packages store their dependencies. They are by exact version, not minimum/maximum versions. This is something I want to fix when I have enough time and libpkg is able to work, without user input, with multiple package formats.