2014-05-10 4 views
1

Je suis sur OSX Marvericks avec rvm. L'installation de l'extension native comme nokogiri à partir du bundler a échoué. Mais l'installation à partir de la commande gem fonctionne. J'ai également installé le dernier XCode, outil de ligne de commande.installation de l'ensemble échoué sur osx 10.9

Je n'ai aucune idée quelle est la différence entre l'installation de paquet et l'installation de gemme.

 
$ rvm requirements 
Checking requirements for osx. 
Certificates in '/usr/local/etc/openssl/cert.pem' already are up to date. 
Requirements installation successful. 
Yusuke-no-MacBook-Air-2:doorkeeper-jp-admin yandod$ bundle install 
Fetching gem metadata from https://rubygems.org/......... 
Fetching additional metadata from https://rubygems.org/.. 
Resolving dependencies... 
Using rake 10.3.1 
Using bundler 1.6.2 
Using mini_portile 0.5.3 

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 

    /Users/yandod/.rvm/rubies/ruby-2.0.0-p451-rvm/bin/ruby extconf.rb 
/Users/yandod/.rvm/rubies/ruby-2.0.0-p451-rvm/bin/ruby: invalid option -H (-h will show valid options) (RuntimeError) 

extconf failed, exit code 1 

Gem files will remain installed in /Volumes/Macintosh HD 2/develop/doorkeeper-jp-admin/vendor/bundle/gems/nokogiri-1.6.1 for inspection. 
Results logged to /Volumes/Macintosh HD 2/develop/doorkeeper-jp-admin/vendor/bundle/extensions/x86_64-darwin-13/2.0.0/nokogiri-1.6.1/gem_make.out 
An error occurred while installing nokogiri (1.6.1), and Bundler cannot continue. 
Make sure that `gem install nokogiri -v '1.6.1'` succeeds before bundling. 

résultat pour gem install.

 
$ gem install nokogiri -v '1.6.1' 
Building native extensions. This could take a while... 
Successfully installed nokogiri-1.6.1 
1 gem installed 

versions pour les logiciels associés:

 
$ bundle --version 
Bundler version 1.6.2 
$ rvm --version 

rvm 1.25.25 (stable) by Wayne E. Seguin , Michal Papis [https://rvm.io/] 
$ gem --version 
2.2.2 

ajouté: ma config Bundler

 
$ cat ~/.bundle/config 
BUNDLE_PATH: ./vendor/bundle 
BUNDLE_BUILD__NOKOGIRI: --use-system-libraries --with-iconv-dir=/usr/local/opt/libiconv --with-xml2-config=/usr/local/opt/libxml2/bin/xml2-config --with-xslt-config=/usr/local/opt/libxslt/bin/xslt-config 
+1

'' 'bundle install''' échoue toujours après avoir installé la gemme? – eduardo

+0

il échoue encore même après "gem install" –

+0

Si la gemme est installée, bundler ne devrait pas essayer de l'installer à nouveau (dans ce cas, bundler dit 'using' au lieu de 'installer'). Il est possible que vous utilisiez '' 'bundle install''' dans un autre ruby ​​/ gemset que celui que vous utilisez' '' gem install nokogiri'''? – eduardo

Répondre

0

Lorsque vous faites gem install le gem est installé à votre emplacement système par défaut pour les gemmes (vous pouvez obtenir cela en regardant la sortie de gem env).

Mais quand vous faites bundle install vous installez la pierre à un endroit autre que le dépôt de pierres précieuses de votre système (comme vous avez configuré un chemin personnalisé pour votre paquet BUNDLE_PATH=./vendor/bundle), de sorte que Bundler installera les pierres précieuses, même si elles re présent dans le référentiel gem du système, car vous n'utilisez pas cela.

Maintenant, pour une raison quelconque, la commande gem n'a aucun problème à localiser les bibliothèques système nécessaires pour créer les extensions natives de la gemme, mais Bundler l'a. Donc, ce que vous avez à faire est de charger Bundler les chemins pour ces bibliothèques.

Donc, en supposant que vous utilisez Homebrew:

  • Assurez-vous que vous avez toutes les dépendances natives installées:
    brew install libxml2 libxslt libiconv

  • Instruire Bundler comment construire la pierre précieuse nokogiri:
    bundle config build.nokogiri --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"

  • Installer le faisceau, en signalant nokogiri pour utiliser le l ibraries: NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install

Il devrait l'être.

EDIT:

Bien que les étapes ci-dessus peuvent rester nécessaire, il semble que le problème réel est la présence de caractères « espace » dans le chemin de votre projet.Voyant que la désactivation de l'option de chemin d'accès au faisceau fonctionne, j'ai examiné votre sortie bundle install d'origine avec plus de précautions et j'ai pris conscience que vous utilisez ce qui ressemble à un lecteur externe avec des caractères 'espace' sur son prénom.

Les trajectoires de projet incluant l'espace ou les caractères spéciaux sont généralement un problème pour beaucoup d'outils, vous devriez donc les éviter. Essayez de renommer votre volume ou de déplacer votre projet vers un autre emplacement.

Désolé je n'avais pas réalisé avant.

+0

Je vous ai suivi pas à pas montré. mais toujours en train de voir la même erreur. –

+0

Pouvez-vous essayer de désélectionner le chemin du bundle sous le projet dir juste pour voir s'il réussit? – eduardo

+0

le chemin du faisceau de désinstallation fait fonctionner la chose. pour l'instant Ne pas utiliser le chemin du faisceau pourrait être une solution pour cela. –

0

essayer: rvm get stable

alors: rvm reload

+0

Je l'ai fait, mais il échoue toujours. –

+0

Le message d'erreur est toujours le même que précédemment. –

+0

vous utilisez homebrew? – matanco