wiki:ProblemHotlist

Version 31 (modified by raimue (Rainer Müller), 16 years ago) (diff)

Remove sudo from the postflight script command, see #16199

Problem Hotlist

(Note, if you're on 10.5, be sure also to check the LeopardProblems page)

1. Fetch failures

If fetch failed for a port, you can still get the distfile from anywhere else. Maybe the homepage of the software lists alternative download locations for source tarballs. Just download the distfile and save it to ${prefix}/var/macports/distfiles/<portname>/. Make sure you get a file with exactly the same name (watch out for .tar.gz and .tar.bz2!) If a port clean --all has been done the distfile directory will have been removed. The directory for each port is created at the beginning of the fetch phase.

There is in additional possibility to use our new distfiles mirror, which will be automatically used as of the 1.7.0 release. If a fetch fails with MacPorts 1.6.x, try:

sudo env MASTER_SITE_LOCAL=http://distfiles.macports.org/<portname> port -v fetch <portname>

Unless it's a port that starts with p5-, py-, py25-, or rb-, in which case you use one of the following:

sudo env MASTER_SITE_LOCAL=http://distfiles.macports.org/perl5 port -v fetch p5-<rest_of_portname>
sudo env MASTER_SITE_LOCAL=http://distfiles.macports.org/python port -v fetch py-<rest_of_portname>
sudo env MASTER_SITE_LOCAL=http://distfiles.macports.org/python port -v fetch py25-<rest_of_portname>
sudo env MASTER_SITE_LOCAL=http://distfiles.macports.org/ruby port -v fetch rb-<rest_of_portname>

Note: Checksum failures after a fetch are typically a separate issue. See the FAQ.

2. A port failed to build, upgrade, or run with a message referring to libintl.3.dylib

dyld: Library not loaded: /opt/local/lib/libintl.3.dylib

When the gettext port was updated from 0.14.x to 0.15.x, the libintl library version changed from 3 to 8. Software always links against a specific library version, so the ports you currently have installed that depend on gettext are linked to the now-nonexistent version 3 libintl library. To fix this problem, all ports that depend on gettext will need to be rebuilt so that they link with the new version 8 libintl library. This may be quite a few ports.

Here is a script that can tell you what ports you have installed that depend on gettext.

#!/bin/bash
if test -z "$1"; then
  echo "usage: $0 <libname>"
  exit 1
fi
for file in `find /opt/local/lib -name *.dylib; find /opt/local/bin`; do
  # Skip this match if it's a symbolic link
  if test -f $file -a ! -L $file; then
    # Look for references to the missing library
    otool -L $file | grep --silent $1
    if test "$?" = "0"; then
      port provides `echo $file`
    fi
  fi
# Grab the name of the port and make sure to list each port just once
done | awk -F: ' { print $2 } ' | sort | uniq

Copy this script, paste it into a text editor, and save it, e.g. as depsearch.sh. Then run it in the Terminal, passing it the name of the library you want it to search for. In this case, to search for ports that depend on gettext, tell it to look for the library "libintl". E.g. if you saved the script to your Desktop, run it this way:

bash ~/Desktop/depsearch.sh libintl

Now you’ve got a list of ports you need to fix. Force uninstall each of these ports and remove their archives.

port uninstall -f <port>
port clean --archive <port>

Once that’s done, force an install of each one.

port install -f <port>

If you’ve got old nonactivated versions of the port installed, you'll need to remove the old versions first. You may remove all old versions this way.

port -duf uninstall

3. A port failed to build with a message referring to 1/lib: No such file or directory

apple-darwin9-gcc-4.0.1: 1/lib: No such file or directory
make: *** Error 1

When upgrading from Tiger to Leopard without removing the previous Mac OS version, updated versions of some libraries in /usr/ and /usr/lib/ are moved from /old/path/ to /old/path 1/. Notice the space before 1. This makes some configure scripts build bad build instructions, making the build phases of several ports fail.

Two incriminated directories have been encountered :

/usr/X11R6 1/
/usr/lib/ruby 1/

In order to fix this problem, you can remove the backups created by the installers, and then clean the work directory of the failed port so that its configure script will be re-run:

port clean --work <port>

4. .profile not set up

After a fresh installation of MacPorts 1.6.0, the .profile is not set up as it should be, with the consequence that the shell says the port command is not found when you try to use it. This is a bug in the 1.6.0 installer. It will be fixed in the next release of MacPorts.

To work around the problem, download the postflight script and run it manually, like this:

$ curl -O http://svn.macports.org/repository/macports/branches/release_1_6/base/portmgr/dmg/postflight && bash postflight

Note: Reopen your Terminal window after running the command!

You could also set up your .profile manually, as explained in the Guide.

5. man port fails with error message

If you get following error message, when trying to access the man page for port or installed ports.

Cannot open the message catalog "man" for locale "de_DE.UTF-8" (NLSPATH="<none>")
No manual entry for port

Add the following line to your .profile or .bash_profile.

export MANPATH=/opt/local/share/man:${MANPATH}

Tracked in ticket #13444.