I’m a heavy macports user. I’ve installed tons of ports and for a while now, I was under the impression that macports matured enough to stop worrying about potential dependency nightmares. Basically macports already felt like the FreeBSD ports collection. Sure, there are b0rken portfiles now and then but thats ok. As I said – I already had a huge collection of ports installed and updated and everything was fine.
Until yesterday. When you have that many ports installed, the command line interface can get a little messy which is why I thought:
» Hmm, aren’t there any good GUI tools out there for managing macports? «
The only thing I found was Porticus (no, I won’t link to it – for your own safety). It basically promised nothing more than a decent GUI. Well in a way it even did but as you might know, there is this (unwritten?) law: » Thou shall not use a GUI wrapper for a command line tool «
So I broke this law. I used Porticus to update some ports, I clicked some options which seemed right at the moment and only one hour later I found my whole macports installation disrupted.
It started out real simple. All I wanted was to install apache2 which needed the port uuid. Now I already had that, but in the wrong version. Now macports wouldn’t let me update that port that easily but instead of reading the macports help, I fired up Porticus and said: » Well, just update what you need to update, so I can have apache2 in the end hmmkay? «
What porticus did was upgrading _all_ ports because in a way, every port can be linked to some other port. » You want apache2? You need uuid, but then you’ll have to update postgres as well and uhm yeah somehow openssl and gnome. You said I should update what I need to update. «
Now this would be fine, in a way, but all the updates failed for some reason. Porticus didn’t stop though and went through the whole dependency chain do break all the other ports as well.
Now there might be even an explanation for all this. Maybe its not Porticus’es fault at all. The thing is though, when you use a GUI tool which doesn’t give you _all_ the options of the command line tool it is wrapping, nor does it give you proper explanation of the options it exposes, you end up clicking on checkboxes you shouldn’t have clicked.
If I had uesed the commandline tool, I would’ve read the man page, I would’ve read all the explanations for the various options and I could’ve picked even the right ones, based on this information.
So in the end, I rm -rf’ed the whole ports directory and started over. I already got half of my work related ports installed. Hoorray!
» THOU SHALL NOT USE GUI WRAPPERS FOR COMMAND LINE TOOLS «
If you do it anyway – there is no point of being angry if something went wrong. You should be prepared for this moment and take it with dignity. Your co-workers and friends will thank you.