wiki:Migration

Version 4 (modified by ryandesign (Ryan Carsten Schmidt), 15 years ago) (diff)

show steps for upgrading essential utilities grep, gawk and gsed before trying to rebuild all ports

Migrating a MacPorts install to a new major OS version or CPU architecture

An installation of MacPorts and the ports installed by it are only designed to work on a single OS release and a single CPU architecture. If you upgrade to a new OS version (e.g. from Tiger to Leopard) or migrate to a new machine with a different type of CPU (e.g. PowerPC to Intel), you may get lucky and have your ports keep working, but in general, things will break.

After performing either of these types of system upgrades, you will first need to install the base MacPorts system again, either from the appropriate disk image or from source. (You will probably not be able to use sudo port selfupdate because the old port command you have will probably not be compatible with your new system.) You must then reinstall all your ports. There are at least two ways you could do this.

Manual method

The most reliable way to reinstall your ports is as follows:

  1. Save the list of installed ports:
    port installed > myports.txt
    
  2. Uninstall them all:
    sudo port -f uninstall installed
    
  3. Browse myports.txt and install the ports that you actually want to use (as opposed to those that are only needed as dependencies) one by one, remembering to specify the appropriate variants:
    sudo port install portname +variant1 +variant2 ...
    

Note that if you have specified variants which are not the default, you may need to install ports in an order other than the alphabetical order recorded in myports.txt.

Automatic method

As of MacPorts 1.8.0, you can alternatively try an automated rebuild of all installed ports for your new platform using these steps:

  1. Check if you have the port "grep" installed:
    port installed grep
    
    If grep is installed, uninstall it and rebuild it:
    sudo port -f uninstall grep
    sudo port install grep
    
    If grep is not installed, proceed to the next step.
  2. Repeat step 1., substituting "gawk" in place of "grep".
  3. Repeat step 1. again, substituting "gsed" in place of "grep".
  4. Reinstall all installed ports:
    sudo port upgrade --force installed
    

Note that this may sometimes fail if the dependency relationships declared by the ports are not completely accurate. If you encounter such a problem, please report it so we can fix it.