wiki:ProblemHotlist

Version 11 (modified by markd@…, 18 years ago) (diff)

--

Problem Hotlist

1. Fetch failures - readline port and others

When MacPorts' fetches via ftp, it contacts servers in passive mode by trying "EPSV" first and then, if that fails, trying "PASV". The server at ftp.cwru.edu, and presumable more servers, break the connection after the "EPSV" request, making it impossible to try "PASV" so the fetch fails. #10832.

Various options are being considered to deal with this in a future release. Right now many ports exhibit this behavior behind firewalls and the only solution is to download the file with the ftp link in a browser or ftp client and copy the file to ${prefix}/var/db/dports/distfiles/<portname>/. 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.

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 lbintl.3.dylib

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

The gettext port was recently updated from 0.14.x to 0.15.x. If you've upgraded gettext to 0.15.x, all ports that depend upon gettext will need to be rebuilt, which 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

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