views:

489

answers:

1

After upgrading to OS X 10.6, I've had all kinds of peculiar issues relating to MacPorts, but most of those have been resolved by simply rebuilding the libraries as required. There is one issue that I can't seem to solve through that method, and even re-building all ports, removing the old /opt directory entirely, has had no effect:

$ rsync example.com:foo .
Password:
dyld: Library not loaded: /opt/local/lib/libintl.8.dylib
  Referenced from: /opt/local/lib/libpopt.0.dylib
  Reason: image not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(601) [Receiver=3.0.7]

The library in question exists, though, which is really frustrating:

$ otool -L /opt/local/lib/libintl.8.dylib
/opt/local/lib/libintl.8.dylib:
    /opt/local/lib/libintl.8.dylib (compatibility version 9.0.0, current version 9.2.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 124.1.1)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.0.0)

This is from the gettext package, which is installed:

$ port provides /opt/local/lib/libintl.8.dylib
/opt/local/lib/libintl.8.dylib is provided by: gettext

$ port installed | grep gettext
  gettext @0.17_4+universal (active)
  p5-locale-gettext @1.05_0 (active)

The files are there:

$ ls -l /opt/local/lib/libintl.8.dylib
lrw-r--r--  1 root  admin  19 Jan 12 17:22 /opt/local/lib/libintl.8.dylib@ -> libintl.8.0.2.dylib
$ ls -l /opt/local/lib/libintl.8.0.2.dylib
-rw-r--r--  2 root  admin  98736 Jan 12 17:22 /opt/local/lib/libintl.8.0.2.dylib

I've searched for errors of this sort, but they all seem to be out of date. Has anyone resolved this problem before?

A: 

You can use the "file" command to see what architectures are present in the dylib:

file /opt/local/lib/libintl.8.0.2.dylib

If only ppc and i386 are present, while you require x86_64, then the library cannot be loaded.

Erik Schnetter
Thanks for the tip. This issue was fixed in a later version of MacPorts with better 10.6 x86_64 compatibility. If you're upgrading from 10.5 to 10.6 it's best to trash all of /opt and rebuild, but remember to grab any databases you might have in there (e.g. MySQL and Postgres ports).
tadman