On Jul 10, 2007, at 18:49, Chris Waterson wrote:
Hi there! I've been using macports for some time now, and one thing that is frustrating is the fact that "port upgrade" leaves crufty old variants behind.
You mean: crufty old versions behind. "variants" has a different meaning for MacPorts.
I've tried:
port -uR upgrade outdated
in the hopes that "-u" would "uninstall non-active ports when upgrading and uninstalling" (as claimed by the man page) and that combining it with "-R" would "also upgrade dependents" (by which I was hoping "upgrade" meant "rebuild with the newer variant).
Here I don't know what you mean by "variant". If you're talking about variants in the way that MacPorts defines that term, then "upgrade" will only retain the set of variants with which you originally installed the port. If you now want to have a different set of variants on a port, then your only option is to completely uninstall (or at least deactivate) the existing port, and then install it with the variants you now want. I wasn't familiar with -R. You're right, I see it's in the manpage. But MacPorts follows dependencies by default, so I don't think you need -R.
This doesn't seem to be the case, but leads to lots of extra warnings during my upgrade, for example, the following (five times, or so):
Error: Uninstall sqlite3 3.3.17_0+darwin_8 failed: Please uninstall the ports that depend on sqlite3 first. ---> Unable to uninstall sqlite3 3.3.17_0+darwin_8, the following ports depend on it: ---> apr-util
At which point, for each piece of cruft, I wander through all the dependents by hand, uninstall each, then uninstall the old variant, then re-install each dependent.
Surely I am doing something wrong. Can someone vend me a clue?
I recommend you do the following (substituting any other port name for "sqlite3" as desired): sudo port -u upgrade sqlite3 If you encounter an error that says it's required for other ports, then force the upgrade: sudo port -ufn upgrade sqlite3 If other ports depend on sqlite3, then you need to force (-f) the uninstall. However, then you'll also want the nonrecursive flag (-n), else MacPorts will rebuild all of sqlite3's dependencies too, possibly even multiple times, which is just a waste of your time. The latter is a bug: http://trac.macosforge.org/projects/macports/ticket/10827 Since you normally do want MacPorts to follow dependencies if necessary, you should always first try just upgrading with -u, and only if that fails, switch to -unf. The fact that apr-util is listed five times in your output instead of once is also a bug: http://trac.macosforge.org/projects/macports/ticket/8763