Das MacPorts-Selbstupdate schlägt unter Mac OS X Lion fehl

7

Ich habe kürzlich mein Mac Book Pro auf Lion aktualisiert und war mit der MacPorts-Anwendung konfrontiert, die ich bei mir hatte. Ich hatte XCode 4.2 aus dem App Store heruntergeladen und installiert (sehr un - Appstore wie Installation BTW - Sie klicken auf Install im App Store, aber es hat nur die App heruntergeladen. Sie müssen sie separat installieren), bevor ich das Selfupdate durchgeführt habe, aber nicht scheinen wichtig zu sein. Die Anwendung schlägt mit den folgenden Fehlern fehl (relevante Abschnitte unten) -

/Library/Frameworks/Mono.framework/Versions/2.10.6/include/sqlite3.h:252: warning: ISO C90 does not support ‘long long’

/Library/Frameworks/Mono.framework/Versions/2.10.6/include/sqlite3.h:253: warning: ISO C90 does not support ‘long long’

/usr/bin/cc -c -DUSE_TCL_STUBS -DTCL_NO_DEPRECATED -g -O2 -W -Wall -pedantic  -I/Library/Frameworks/Mono.framework/Versions/2.10.6/include   -DHAVE_CONFIG_H -I.. -I.  -I"/usr/include" -fno-common util.c -o util.o
In file included from util.h:36,
                 from util.c:37:

/Library/Frameworks/Mono.framework/Versions/2.10.6/include/sqlite3.h:252: warning: ISO C90 does not support ‘long long’

/Library/Frameworks/Mono.framework/Versions/2.10.6/include/sqlite3.h:253: warning: ISO C90 does not support ‘long long’

.
.
.

/usr/bin/cc -dynamiclib -g -O2 -W -Wall -pedantic  -I/Library/Frameworks/Mono.framework/Versions/2.10.6/include    -Wl,-single_module registry.o util.o entry.o entryobj.o ../cregistry/cregistry.a -o registry.dylib -L/System/Library/Frameworks/Tcl.framework/Versions/8.5 -ltclstub8.5   -L/Library/Frameworks/Mono.framework/Versions/2.10.6/lib -lsqlite3  
ld: warning: ignoring file 

/Library/Frameworks/Mono.framework/Versions/2.10.6/lib/libsqlite3.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:

  "_sqlite3_errmsg", referenced from:
      _set_sqlite_result in util.o
      _reg_sqlite_error in cregistry.a(registry.o)
      _reg_detach in cregistry.a(registry.o)
      _reg_close in cregistry.a(registry.o)
      _reg_attach in cregistry.a(registry.o)
      _reg_open in cregistry.a(registry.o)

.
.
.
.

"_sqlite3_create_collation", referenced from:
      _init_db in cregistry.a(sql.o)

ld: symbol(s) not found for architecture x86_64

collect2: ld returned 1 exit status

make[2]: *** [registry.dylib] Error 1

make[1]: *** [all] Error 1

make: *** [all] Error 1

shell command "cd /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/base && CC=/usr/bin/cc ./configure --prefix=/opt/local --with-tclpackage=/Library/Tcl --with-install-user=root --with-install-group=admin --with-directory-mode=0755 --enable-readline && make && 

make install" returned error 2

Error: /opt/local/bin/port: port selfupdate failed: Error installing new MacPorts base: shell command failed (see log for details)

Soweit ich weiß, sollte ich keine Probleme haben, aber es sieht so aus, als hätte ich keine andere Wahl, als MacPorts und alle Anwendungen darunter neu zu installieren.

Nikhil
quelle
Ich habe diese Frage hinzugefügt, damit ich auf die Antwort hinweisen kann. Als ich nach der Antwort suchte, sah ich keine der StackOverflow-Sites in der Liste und war der Meinung, dass diese Frage auch hier hinzugefügt werden sollte.
Nikhil
PS: Ich habe MacPorts 2.0.1 verwendet, als ich das Selbstupdate ausgeführt habe. Ich bin jetzt bei 2.0.3
Nikhil
Vielen Dank dafür - ich hätte hundert Jahre gebraucht, um das herauszufinden.
Shanusmagnus

Antworten:

6

Ich habe die Antwort gefunden, als ich bei Google nach den Fehlermeldungen als Suchanfragen gesucht habe.

Grundsätzlich liegt das Problem darin, dass ich auch das Mono-Framework installiert hatte und MacPorts aus irgendeinem seltsamen Grund die im Mono Framework enthaltene Version von SQL Lite während der Erstellungs- und Installationsschritte verwendete. Diese Version von SQL Lite ist nicht mit der MacPorts-Anwendung kompatibel. Infolgedessen ist die Installation fehlgeschlagen.

Die Problemumgehung besteht darin, die Datei /Library/Frameworks/Mono.framework/ vorübergehend an einen anderen Ort zu verschieben und dann den Befehl selfupdate auszuführen. Sobald das Selbstupdate abgeschlossen ist, verschieben Sie den Ordner zurück zu /Library/Frameworks/Mono.framework/.

Ich habe die Lösung von Mark bekommen, der hier freundlicherweise darüber gebloggt hat - http://itandbiscuits.blogspot.com/2011/09/macports-mono.html

Nikhil
quelle
1
Das Problem ist, dass das Mono-Installationsprogramm / usr / bin / pkg-config hinzufügt, wodurch alles mit dem Mono Framework verknüpft wird. Diese Binärdatei ist in einer sauberen OS X-Installation nicht vorhanden. Somit ist es tatsächlich ein Fehler in Mono, nicht in MacPorts. Problemumgehungen werden in einem Ticket im MacPorts Issue Tracker erläutert .
Raimue
Der Fehler wurde auch im Mono-Bug-Tracker abgelegt - bugzilla.xamarin.com/show_bug.cgi?id=1154
Nikhil