keeping a (maximally) clean active tree

Ryan Schmidt ryandesign at macports.org
Wed Dec 5 23:57:11 PST 2007


On Dec 6, 2007, at 01:52, David Blank-Edelman wrote:

> On Dec 6, 2007, at 2:36 AM, Ryan Schmidt wrote:
>
>> The message should say "Won't uninstall cairo 1.4.10_0 because the  
>> following ports depend on cairo:"
>>
>> Ports don't depend on specific versions of ports. If you've just  
>> installed cairo 1.4.12_0, then the ports that depend on cairo will  
>> be happy with that version as well, and you're free to forcibly  
>> uninstall the old 1.4.10_0 version.
>
> Ah, ok. I just assumed that each port knew what it took to build it  
> and would would attempt to keep that dependency around because it  
> has no way of knowing that the old program will work with the new  
> shared lib. I guess this shows my pre-OSX *NIX roots.

Well, you're right, of course. If a new version of some software  
installs new libraries that aren't ABI-compatible with the old  
libraries, everything that depends on that software will break. This  
happened, for example, with the upgrade from gettext 0.14.x to  
0.15.x, and workarounds for this situation were posted here:

http://trac.macosforge.org/projects/macports/wiki/ 
ProblemHotlist#a2.Aportfailedtobuildupgradeorrunwithamessagereferringtol 
ibintl.3.dylib

>> Someone posted a recipe some time ago which I now agree with,  
>> which is:
>>
>> 1. Run "port outdated"
>> 2. If there aren't any listed, go to 5.
>> 3. Pick the first port in the list (let's call it "foo") and say  
>> "sudo port upgrade foo". This might upgrade just foo, or if foo  
>> has outdated dependencies, it will update those too.
>> 4. Go back to 1.
>> 5. Uninstall all now-inactive old versions with "sudo port -f  
>> uninstall inactive"
>
> Great, I'll do just that.
>
> I usually think of "force" switches as something you only do when  
> the normal procedure fails. It is a little strange to me that one  
> would want to force things as a matter of course. It also means  
> that the default situation leaves inactive and unneeded ports  
> hanging around by default. Just our of curiosity,  can someone say  
> a little bit more about why it is done that way?

I agree here again. You should not have to force anything in normal  
use. But you currently do, to uninstall old versions of software on  
which other software depends. Discussion of how this situation could  
be improved would probably be welcomed on the macports-dev list.




More information about the macports-users mailing list