2016-01-07 45 views
45

Jeden z moich programistów zaktualizował Nokogiri, a podczas wyciągania zaktualizowanego Gemfile moja bundle install zawiedzie.Błąd podczas instalowania Nokogiri (1.6.7) na El Capitan

➜ my-project git:(master) bundle install 
Fetching source index from https://rubygems.org/ 
Using rake 10.4.2 
Using i18n 0.7.0 
Using json 1.8.3 
Using minitest 5.8.3 
Using thread_safe 0.3.5 
Using tzinfo 1.2.2 
Using activesupport 4.2.3 
Using builder 3.2.2 
Using erubis 2.7.0 
Using mini_portile2 2.0.0 

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

    /Users/me/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb --use-system-libraries 
checking if the C compiler accepts ... yes 
checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future... no 
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=/Users/me/.rvm/rubies/ruby-2.1.2/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-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 

extconf failed, exit code 1 

Gem files will remain installed in /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7 for inspection. 
Results logged to /Users/me/.rvm/gems/[email protected]/extensions/x86_64-darwin-13/2.1.0-static/nokogiri-1.6.7/gem_make.out 
An error occurred while installing nokogiri (1.6.7), and Bundler cannot continue. 
Make sure that `gem install nokogiri -v '1.6.7'` succeeds before bundling. 

Jak sugeruje w "Failing to install Nokogiri gem" Ja bezskutecznie próbowała uruchomić:

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

Jak sugeruje w "Failing to install Nokogiri gem" Próbowałem również:

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

oraz:

gem install nokogiri -v 1.6.5 -- --use-system-libraries 

Moja wersja systemu operacyjnego to El Capitan 10.11.2, a ja sprawdziłem, czy umowa licencyjna Xcode została zaakceptowana.

Jakieś pomysły dotyczące instalacji Nokogiri, aby odnieść sukces?

+0

Każdy sukces z 'wywaru zainstalować libxml2'? – RAJ

+0

Nie, przepraszam, że to nie miało znaczenia. Ale komunikat instalacyjny wskazuje, że jest już zainstalowany: 'Ta formuła jest tylko keg, co oznacza, że ​​nie była dowiązana do/usr/local. OS X zapewnia już to oprogramowanie, a instalacja kolejnej wersji równolegle może powodować wszelkiego rodzaju problemy. Zasadniczo nie ma dla ciebie żadnych konsekwencji. Jeśli tworzysz własne oprogramowanie i wymaga tego wzoru, będziesz musiał dodać do swoich zmiennych konstrukcyjnych : LDFLAGS: -L/usr/local/opt/libxml2/lib, CPPFLAGS: -I/usr/local/opt/libxml2/include' – ChristofferJoergensen

Odpowiedz

131

Należy zainstalować xcode-select pakiety, następnie ponownie spróbuj zainstalować nokogiri. Spróbuj tych poleceń,

xcode-select --install 

następnie spróbuj

gem install nokogiri 

ze cokolwiek Nokogiri wersja chcesz.

Nokogiri zależy od wielu bibliotek, takich jak libxslt, libxml i zlib. Wersje Dev (włączając w to źródła) powinny być zainstalowane przed instalacją Nokogiri w dowolnej dystrybucji Linuksa. W przypadku OS X powyższe polecenie powinno działać, jak sądzę.

Rzeczywiste rozwiązanie znajduje się w komentarzach poniżej.

+2

Jeśli odpowiedź brzmi" xcode-select: błąd: narzędzia wiersza poleceń są już zainstalowane, użyj "Aktualizacja oprogramowania", aby zainstalować aktualizacje ", powinno Następnie uruchom 'xcode-select --update' lub coś podobnego? – ChristofferJoergensen

+0

Przeszedłem przez problemy Nokogiri na github i znalazłem [to] (http://stackoverflow.com/questions/5528839/why-does-instalacji-nokogiri-on-mac-os-fail-z-libiconv-is-missing) rozwiązanie działa dla kapitana el! Sprawdź, czy to pasuje do twoich wymagań! –

+0

Odniesienie Komentarz do github! [link] (https://github.com/sparklemotion/nokogiri/issues/1345#issuecomment-149658333) –

3

Dodaj gem "nokogiri", ">= 1.6.7.rc3" w Gemfile

a następnie uruchomić

bundle install 
+1

Nie, podał dokładnie ten sam komunikat o błędzie. Kiedy próbowałem uruchomić 'bundle update nokogiri' zamiast tego otrzymałem ten sam rodzaj błędu, kończąc na' Wystąpił błąd podczas instalacji nokogiri (1.6.8.rc1), a Bundler nie może kontynuować. Upewnij się, że gem nokogiri -v '1.6.8.rc1' się powiedzie przed pakietowaniem. ". Kiedy próbuję dodać bardziej "gem" nokogiri "," 1.6.7.rc3 "' do mojego Gemfile, pojawia się ten sam komunikat o błędzie, kończący się na 'Wystąpił błąd podczas instalacji nokogiri (1.6.7.rc3), i Bundler nie może kontynuować. Upewnij się, że gem nokogiri -v '1.6.7.rc3' się powiedzie przed pakietowaniem. " – ChristofferJoergensen

29

Spróbuj tego:

gem install nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/ 

A następnie uruchomić

bundle update 

Mam nadzieję, że to może pomóc :)

+3

To rozwiązało moje problemy. – Vadim

+0

Nie polecam tego, ponieważ możesz poprosić Nokogiri o współpracę z nieobsługiwaną wersją biblioteki libxml2. –

+0

To działa dla mnie pod Linuksem. –

0

Aktualizowanie Xcode i narzędzia wiersza poleceń stałe wszystkie błędy dla mnie. Później mogłem zainstalować Nokogiri z gem nokogiri instalacji, a po tym gem instalacji szyn pracował dobrze.

1

spróbuj:

apt-get install ruby-nokogiri 
bundle install 
+2

Powodzenia przy użyciu apt na OS X ... –

7

I używasz homebrew na utrzymanie bibliotek jak libml na komputerze Mac, następujące polecenie na komputerze Mac może pomóc:


gem install nokogiri -v '1.6.8' -- --use-system-libraries --with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib/ 

tylko upewnić się, że ścieżki dla libxml jest taki sam jak mój, chyba że napar zmieni się z następną wersją.Można to sprawdzić za pomocą komendy poniżej:


brew info libxml2 
0

następujące kroki pracował dla mnie

ruby -v 
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13] 

Run the following to install RVM and the latest stable version of Ruby: 
\curl -L https://get.rvm.io | bash -s stable --ruby 

Install the Ruby interpreter: 

rvm install 2.1.0 --autolibs=enable 

After that's finished installing, run: 

source /Users/{your_user_name}/.rvm/scripts/rvm 
Run: 

ruby -v 
ruby 2.1.0p76 (2014-02-24 revision 45161) [x86_64-darwin13.0] 


==> sudo gem install bundler 
Fetching: bundler-1.14.6.gem (100%) 
Successfully installed bundler-1.14.6 
Parsing documentation for bundler-1.14.6 
Installing ri documentation for bundler-1.14.6 
Done installing documentation for bundler after 4 seconds 
1 gem installed