Je viens de passer la meilleure partie de la matinée de travail par le biais de cet avertissement. Ce correctif est pour les gens qui utilisent Mac OS Lion. Le correctif ci-dessus (bundle config build.nokogiri --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib --with-xslt-dir=/opt/local
) est pour Snow Leopard avec libxml2 installé via macports.
Avec le Lion, libxml2 est chargé dans le cadre du processus de démarrage. Indépendamment de la libxml2 nokogiri pointe, le Lion, le système de bibliothèque par défaut pour libxml2 sera utilisé lors de l'exécution. Lion utilise libxml2.2.7.3 trouvé en /usr
(pas /usr/local
).
Tel que mentionné à plusieurs autres endroits, on peut simplement ignorer l'avertissement. Si, comme moi, l'avertissement vous rend fou, vous pouvez faire ceci:
bundle config build.nokogiri --with-xml2-dir=/usr --with-xslt-dir=/opt/local --with-iconv-dir=/opt/local
Fait intéressant, si vous tapez nokogiri -v
à la ligne de commande, vous obtiendrez le contraire d'avertissement:
WARNING: Nokogiri was built against LibXML version 2.7.3, but has dynamically loaded 2.7.8
Ceci suggère qu'il n'est plus à la façon de libxml2 est en cours de chargement, avec Ruby & Rails en utilisant le système chargé libxml2 et de la ligne de commande à l'aide de libxml2 de l'environnement path. De toute façon, les silences de l'erreur pour moi.
Je vais le dire encore une fois – ce n'est que pour Lion. Le correctif précédent travail pour Snow Leopard.
C'est la fin de la réponse. Arrêter de lire ici.
OK, vous n'avez pas arrêter de lire... bien...
PAS RECOMMANDÉ!!!!!!
Vous avez été averti. Vous pouvez vérifier que Mac OSX est le chargement de la bibliothèque libxml2 dans son bootstrap par la désactivation de la libxml2 trouvé en /usr/lib
. Faire quelque chose comme la copie de toutes les versions d' libxml2*.dylib
de libxml2*.dylib.old
(sur ma machine c'était libxml2.2.7.3
, libxml2.2
et libxml2
)
Après avoir fait cela, l'exécution de nokogiri ne produira pas d'erreurs. C'est parce qu'il ne peut pas trouver le chargé libxml2 et maintenant, suivez le chemin d'accès d'environnement, avant de trouver un libxml2.2.7.8
en /opt/local
MAIS... Vous ne serez pas en mesure de copier les anciens libxml les fichiers de retour. C'est parce que l'OS a besoin de la libxml2 qui a été chargé dans le bootstrap.
Éteindre et allumer à nouveau brique de votre machine. L'écran de connexion va s'accrocher et de se bloquer et de l'accrocher. Hors tension et à nouveau sous tension en mode mono-utilisateur (maintenez la touche Commande enfoncée-S lors du redémarrage). Vous pouvez regarder le bootstrap se produire. Faible et voici, il renvoie une erreur qu'il ne peut pas charger libxml2 et puis cesse de fonctionner.
Hors tension et à nouveau sous tension. Ce temps de démarrage en mode de récupération (maintenez la touche Commande enfoncée-R ou maintenez la touche Option enfoncée, puis sélectionnez le disque de récupération). En mode de récupération ouvrez le terminal (utilities/terminal
). Mont - /usr/lib
sur votre HD (essayez /Volumes/Macintosh\ HD/usr/lib
) et la copie de la libxml2 les fichiers de retour. Reboot et tout ira bien :)