[macports] Building in a jail?

Ryan Schmidt ryandesign at macports.org
Wed Jan 23 14:14:38 PST 2008


On Jan 23, 2008 4:21 PM, James Sumners wrote:

> On Jan 23, 2008, at 15:06, Chris Pickel wrote:
>
>> On 23 Jan, 2008, at 12:34, James Sumners wrote:
>>
>>> I just upgraded from a PowerBook to a MacBook Pro. The migration
>>> assistant tool kept my old macports system intact. I can still  
>>> run all
>>> of the ports I had installed; particularly, I can still use TeXmacs
>>> and teTeX. However, I had built all of my ports as PPC binaries, so
>>> they are running via Rosetta. This also means I can't update any  
>>> of my
>>> ports because port fails to recognize the architecture. Since there
>>> have been so many posts lately about things failing to build on  
>>> 10.5,
>>> I'm a little scared to wipe my old macports system and rebuild from
>>> scratch. I particularly can't afford to be without a LaTeX  
>>> environment
>>> right now.
>>>
>>> So, is there any way I can "jail" a new installation of macports?  
>>> If I
>>> can build everything successfully, I want to be able to delete  
>>> the old
>>> version and move the new one to the standard location.
>>
>> You can have multiple installs of MacPorts on a single system.  
>> However, some ports may not work if you change the location of the  
>> installation. So, I would recommend that you move the existing  
>> installation aside (i.e. `sudo mv /opt/local /opt/ppc`) and  
>> install a new one in its place. If you succeed at getting the new  
>> one running sufficiently, you can get rid of the old one;  
>> otherwise move the old one back in place.
>>
>> In order to quarantine two MacPorts installations, you should  
>> build them from source. The tarballs are available on the  
>> Downloads [1] page. You should ./configure them along the lines of  
>> the following:
>>
>> % ./configure --prefix=/opt/local \
>>               --with-tclpackage=/opt/local/share/macports/Tcl
>>
>> You can pick something other than /opt/local if you want, but it  
>> might not work to move it back to /opt/local later, should you  
>> care. Also, it's possible that you might get conflicts for files  
>> installed in /Applications/MacPorts or /Library/Frameworks.
>
> I was concerned about configuration files outside of /opt/local. But
> now that I think about it, even if there are any, the Intel port won't
> have a different configuration than the PPC one. So that could
> probably work. Thanks.

Configuration files go in ${prefix}/etc, so there shouldn't be any  
outside of ${prefix}. However, some ports do install other things  
outside of ${prefix}. For example, into /Applications/MacPorts. You  
should also rename /Applications/MacPorts to /Applications/MacPorts- 
ppc before installing MacPorts again, and remove it later once  
everything's ok. If you had any server programs, they may also have  
installed startup items in /Library/LaunchDaemons (if you were  
running Tiger and up) or /Library/StartupItems (for Panther and before).

Some ports will install other things outside the prefix, perhaps in / 
usr/X11R6. I'm guessing these items weren't migrated from the old  
system, therefore any ports that depend on this are now broken.

You don't need to build MacPorts from source; you could also just  
install from the Mac Ports 1.6.0 Leopard disk image. But before you  
do, you will also need to rename /Library/Tcl/macports1.0, for  
example to /Library/Tcl/macports1.0-ppc.


If your "port" command were working, "port contents foo" would show  
you what a port installed. You could run "port contents installed" to  
see everything installed by all ports, and filter this to see  
everything that was installed outside of the prefix, for example  
since your prefix is /opt/local you could run:

port contents installed | grep -v '^Port .* contains:' | grep -v /opt/ 
local

However, you said yourt "port" command isn't working, probably since  
it needs the Tcl libraries in /Library/Tcl/macports1.0, and these are  
for the wrong architecture.

If you still have this ports installation on the PowerPC Mac on which  
it was originally installed, you could run the above command there,  
to discover where else outside of ${prefix} items were installed, and  
use that information to remove those files on the Intel Mac prior to  
reinstalling MacPorts.



More information about the macports-users mailing list