Nokogiri ‘Imansible creare gem native extension’ quando eseguo l’installazione di bundle

Sto eseguendo l’ bundle install e sto ricevendo questo errore:

 Building nokogiri using system libraries. Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --use-system-libraries Building nokogiri using system libraries. libxml2 version 2.6.21 or later is required! *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby --help --clean --use-system-libraries --with-zlib-dir --without-zlib-dir --with-zlib-include --without-zlib-include=${zlib-dir}/include --with-zlib-lib --without-zlib-lib=${zlib-dir}/lib --with-xml2-dir --without-xml2-dir --with-xml2-include --without-xml2-include=${xml2-dir}/include --with-xml2-lib --without-xml2-lib=${xml2-dir}/lib --with-libxml-2.0-config --without-libxml-2.0-config --with-pkg-config --without-pkg-config --with-xslt-dir --without-xslt-dir --with-xslt-include --without-xslt-include=${xslt-dir}/include --with-xslt-lib --without-xslt-lib=${xslt-dir}/lib --with-libxslt-config --without-libxslt-config --with-pkg-config --without-pkg-config --with-exslt-dir --without-exslt-dir --with-exslt-include --without-exslt-include=${exslt-dir}/include --with-exslt-lib --without-exslt-lib=${exslt-dir}/lib --with-libexslt-config --without-libexslt-config --with-pkg-config --without-pkg-config extconf failed, exit code 1 Gem files will remain installed in /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/gems/nokogiri-1.6.2.rc2 for inspection. Results logged to /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/nokogiri-1.6.2.rc2/gem_make.out An error occurred while installing nokogiri (1.6.2.rc2), and Bundler cannot continue. Make sure that `gem install nokogiri -v '1.6.2.rc2'` succeeds before bundling. 

Qualche idea di cosa potrebbe essere?

MODIFICARE:

Ho anche installato nokogiri seguendo le istruzioni del tutorial , e la cosa strana è che la gem è stata installata con successo. Quando nokogiri (1.6.2.1) gem list , ho nokogiri (1.6.2.1) , ma quando nokogiri (1.6.2.1) bundle install esso mostra l’errore.

I consigli sopra non mi hanno aiutato, ecco la soluzione per OS 10.9:

 brew install libxml2 bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2" bundle install 

Su Mavericks questa soluzione ha funzionato per me:

 gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 

Vedi: https://github.com/sparklemotion/nokogiri/issues/1099#issuecomment-43023208

Su Amazon Linux, ho dovuto installare queste due librerie di sviluppo e quindi specificare il percorso di inclusione per libxml2

 $ yum install libxml2-devel libxslt-devel $ gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/ 

Ho anche avuto qualche problema nell’installare nokogiri, che ho installato i seguenti pacchetti, ha funzionato per me:

 libxslt-dev libxml2-dev libruby1.8 libreadline-ruby1.8 libopenssl-ruby libxml2 

Non sono sicuro, quale era esattamente necessario.

http://nokogiri.org/tutorials/installing_nokogiri.html . Fare riferimento a questo collegamento e installare le dipendenze richieste per nokogiri. Quindi esegui questo

  • bundle config build.nokogiri --use-system-libraries
  • bundle install

Su Yosemite 10.10.1, questo passaggio non ha aiutato (potrebbe essere che funzioni per altri)

 gem install nokogiri -- --use-system-libraries 

Fondamentalmente il problema sul mio locale era dovuto a libxml2 , quindi la soluzione alternativa era il trucco

 bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 bundle install 

Questo ha funzionato per OS X El Capitan:

 brew install libxml2 libxslt libiconv 

Dopo aver eseguito l’installazione di libx libxml2 libxslt libiconv ‘, è ansible che siano già installati. Nessun problema, non fa mai male ricontrollare.

 sudo gem install nokogiri -v '1.6.7' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib bundle install 

Cambia la versione di nokogiri, se necessario. per esempio

 sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib 

L’errore indica che la libreria di sistema libxml2 non è aggiornata. Hai bisogno della versione 2.6.21 o successiva.

Sul mio sistema Debian / ubuntu, nokogiri compila per me, e posso vedere che ho la versione 2.9.1

 dpkg -l | grep libxml2-dev ii libxml2-dev:amd64 2.9.1+dfsg1-3 amd64 Development files for the GNOME XML library 

Hai tre opzioni qui.

  1. Verifica se il gestore dei pacchetti del sistema operativo fornisce una versione più recente della libreria libxml2

  2. Scarica l’ultimo codice sorgente libxml2, compila e installalo

  3. Specifica manualmente una versione precedente di nokogiri nel tuo Gemfile che funzioni con la vecchia libreria libxml2. Il registro dei cambiamenti di nokogiri mostra che non avrai questo problema con la versione 1.4.7 di nokogiri (sebbene l’utilizzo di una versione precedente possa esporre a problemi di sicurezza)

Per la soluzione n. 3, inseriresti questo nel tuo gemfile: gem 'nokogiri', '1.4.7'

Su Yosemite 10.10 i seguenti passaggi risolvono completamente i miei problemi:

  • sudo xcode-select -switch /Library/Developer/CommandLineTools
  • gem uninstall nokogiri libxml-ruby
  • gem install nokogiri

Per Mac, il motivo per cui non è riuscito è che non avevi gli ultimi Xcode Developer Tools. Nokogiri è già stato incluso nel pacchetto con libxml2. Per la mancanza degli ultimi Xcode Developer Tools, non è ansible creare estensioni native.

Per aggiornare Xcode Developer Tools utilizzando:

 xcode-select --install 

E poi:

 gem install nokogiri 

Se lo aggiusti usando

 gem install nokogiri -- --use-system-libraries 

potrebbe ricevere un avvertimento simile più tardi:

 WARNING: Nokogiri was built against LibXML version 2.9.3, but has dynamically loaded 2.9.0 

Questo thread su GitHub mi ha dato il trucco di cui avevo bisogno per installare Nokogiri 1.6.2:

Il mio ~ / .gitconfig ha avuto l’impostazione autocrlf = input . Quando rimuovo questa impostazione la costruzione di nokogiri ha successo.

Su Yosemite 10.10 questa soluzione ha funzionato per me:

 gem install nokogiri -- --use-system-libraries 

Per #CentOS avevo bisogno di fare quanto segue:

 gem update --system yum install libxml2-devel libxslt-devel ruby-devel gem install nokogiri -- --use-system-libraries 

Questo è un thread vecchio, ma ho riscontrato problemi simili e la soluzione nel mio caso era molto diversa da quella postata finora.

Dopo alcuni scavi, ho trovato questo thread: https://github.com/bundler/bundler/issues/2648#issuecomment-25124800

Parla di bundler usando una versione diversa di ruby a quella usata dalla gem.

Dalla copia di OP, possiamo vedere che bundler sta usando la copia del sistema Mac di ruby: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby

Nel mio caso ho scoperto che la gem proveniva dalla birra; which gem dato /usr/local/bin/gem quale symlinks a /Cellar/ruby/2.3.3/bin/gem . La mia ipotesi è che il caso dell’OP fosse lo stesso.

Quindi, gem e bundler non stanno lavorando sulla stessa installazione di ruby, il che spiega perché l’OP vede questo:

Quando eseguo gem list, ho nokogiri (1.6.2.1), ma quando eseguo il bundle install esso mostra l’errore.

Nel mio caso, ho semplicemente eseguito gem install bundler , che ha permesso a bundler di iniziare a utilizzare la versione brew del ruby ​​e tutti i problemi sono scomparsi.

Su OSX 10.12 (Sierra) questo ha funzionato per me:

gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2

Ho avuto questo problema esatto. Corro un ambiente rotaie su un mac. Dopo aver effettuato l’aggiornamento da Yosemite a Sierra, credo che questo sia iniziato.

Per risolvere il problema ho dovuto semplicemente installare gli xcode command line tools . Non so se l’aggiornamento Sierra li ha rimossi o cosa.

xcode-select --install

(questo installerà gli xcode command line tools )

Anche un altro sintomo … cose come lo stato git non funzionerà. Dopo questo sono stato in grado di fare rails nuovo appname e andava bene.