Błąd podczas instalowania libv8: BŁĄD: Nie można zbudować rozszerzenia natywnego gem


183

Zrobiłem projekt szyny z

rails new test_bootstrap.

udało się.

przeniósł się do katalogu projektu i dodał klejnoty

gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"

i biegnij

bundle install

po tym mam ten błąd.

Installing libv8 (3.16.14.3)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
지정된 경로를 찾을 수 없습니다.                                                          지정된 경로를 찾을 수
없습니다.                                                          지정된 경로를 찾을 수 없습니다.

c:/RailsInstaller/Ruby1.9.3/lib/ruby/ge
ms/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:58:in `setup_python!': libv8 requires
python 2 to be installed in order to build, but it is currently not available (RuntimeErr
or) from c:/RailsInstaller/Ruby1.9.
3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:42:in `block in build_lib
v8/builder.rb:42:in `block in build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `chdir'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/location.rb:24:in `install!'
        from extconf.rb:7:in `<main>'                                                    


Gem files will remain installed in c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/l
ibv8-3.16.14.3 for inspection.
Results logged to c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ex
t/libv8/gem_make.out
An error occurred while installing libv8 (3.16.14.3), and Bundler cannot
continue.
Make sure that `gem install libv8 -v '3.16.14.3'` succeeds before bundling.

przepraszam za niektórych Koreańczyków. Mówi: Nie może znaleźć wybranej ścieżki ani czegoś takiego.

i próbowałem uruchomić to polecenie

gem install libv8 -v '3.16.14.3' 

rzucanie tego samego błędu.



Znalazłem to, muszę zainstalować Pythona i ustawić ścieżkę. a teraz to działa. mam nadzieję, że ludzie rozwiążą ten wątek. stackoverflow.com/questions/10812696/…
— Canna

Nie szukaj konia z prezentami w ustach :) Z braku wsparcia Debiana w zakresie bezpieczeństwa ekosystemu wokół libv8 i Node.js : „Platforma Node.js jest zbudowana na libv8-3.14, który ma wysoki poziom bezpieczeństwa problemy, ale obecnie w projekcie nie ma ochotników ani zespołu bezpieczeństwa, który
— byłby

Odpowiedzi:


612

Spróbuj tego:

gem install libv8 -v '3.16.14.3' -- --with-system-v8

Uwaga: Ponieważ libv8 jest interfejsem dla silnika V8 używanego przez therubyracer, może być konieczne użycie libv8, nawet jeśli masz już zainstalowany V8. Jeśli chcesz użyć własnej instalacji V8, a nie zbudować ją dla siebie, skorzystaj z --with-system-v8opcji.

Więcej informacji można znaleźć w dokumentacji libv8 na github


6
Używam tego. Kompiluje się dobrze, ale nadal mam błędy podczas uruchamiania „pakietu”
— Sucrenoir

10
Ta część działała, ale nadal pojawia się błąd podczas instalowania programu Therubyracer. Daje mi błąd podobny do tego, który otrzymywałem wcześniej z libv8 „upewnij się, że takie i takie się udają przed dołączeniem do pakietu”, ale kiedy próbuję uruchomić „gem install therubyracer”, pojawia się komunikat „Nie udało się zbudować rozszerzenia natywnego dla gem”. błąd
— sixty4bit

1
Odinstalowuję i ponownie instaluję z argumentem podanym powyżej jako root. Nie działa Mój błąd jest An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.i Bundler::GemspecError: Could not read gem at /home/gitlab/gitlab/vendor/bundle/ruby/2.1.0/cache/libv8-3.16.14.3-x86_64-linux.gem. It may be corrupted. usunąć cały folder pamięci podręcznej i ponowne przeprowadzenie bundle install --full-index --deployment --without development test postgres aws. Pracuje.
— Nick Dong

1
Idealny! gem install libv8 -v '3.16.14.3' -- --with-system-v8pracował dla mnie na OS X 10.11.
— Jagdeep Singh,

Odkryłem, że nie można znaleźć systemu v8, więc brew install v8pomogłem. Postępuj zgodnie z instrukcjami podanymi tutaj: stackoverflow.com/questions/24081473/…
— redfox05

154

Jak rozwiązać problem z libv8 / therubyracer

Napotkałem podobny problem, w którym po zainstalowaniu libv8 pojawia się błąd podczas instalowania programu therubyracer. Oto moje rozwiązanie:

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
   
$ bundle install

- patrz błąd podczas instalowania programu Therubyracer -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- zobacz błąd podczas instalowania libv8 -

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8

4
kroki wymienione w tej odpowiedzi działają najlepiej, musimy najpierw zainstalować klejnot libv8, odinstalować, aby zainstalować system w wersji v8 przed klejnotem zainstalować therubyracer (klej zainstalować libv8 z flagą --with-system-v8) :)
— Parthan

1
Nie sądzę, że potrzebujesz pierwszego kroku. Przed uruchomieniem instalacji pakietu użyj brew, aby zainstalować system v8. Następnie zainstaluj ręcznie klejnot Therubyracer i klejnot libv8. i uruchom instalację pakietu. Ale jeszcze tego nie próbowałem.
— gitb

Działa to również dla mnie na OSX 10.10.5 z Ruby 2.1.2p95 dla libv8 3.16.14.11
— Michael Oakley

3
Pamiętaj, aby zmienić „3.16.14.3” na dowolną wersję pakietu, którą próbuje uruchomić lub nie będzie działać po uruchomieniu instalacji pakietu
— Jonathon Blok

Pracował również dla 10.12 (Sierra) z Ruby 1.9.3 dla libv '3.16.14.11'
— sojourner

47

W przypadku homebrew pomaga mi to rozwiązać ten błąd.

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

Widoczne w sprawach rubithracera na Githubie.


To działało dla mnie, chociaż instaluje starszą wersję v8 przez brew.
— Sanjay,

1
Ten błąd doprowadza mnie do szału za każdym razem, gdy zmieniam wersję Ruby. Myślę, że możesz spróbować dostosować opcję wersji v8 i ścieżkę do jej uzyskania.
— kodowanie uzależnione

tylko to rozwiązanie działa dla mnie, dzięki za rozwiązanie
— AMIC MING

@codingaddicted kiedykolwiek zdarzyło Ci się, że ten błąd nadal występuje? Zaktualizowałem ruby ​​i szyny dla nowego projektu i zawsze pojawia się ten błąd, gdy otwieram nową powłokę dla mojego starego projektu. rvm ma obsługiwać te problemy z wersją, ale muszę wykonywać powyższe polecenia za każdym razem, gdy otwieram nową powłokę dla mojego starego projektu.
— iamse7en,

@ iamse7en, o ile pamiętam, muszę je uruchomić dla każdej wersji ruby. Widziałem ten błąd, kiedy aktualizowałem ruby ​​(ale nie zrobiłem tyle ruby ​​w ostatnich miesiącach i nie grałem z różnymi wersjami).
— kodowanie uzależniony

43

Wypróbowałem rozwiązanie wymienione powyżej, które wygląda bardzo dobrze do instalowania pojedynczego klejnotu, ale dla użytkowników pakietu - należy użyć konfiguracji pakietu

Posługiwać się

bundle config build.libv8 --with-system-v8 

i

bundle config build.therubyracer --with-system-v8

skonfigurować pakiet do pobierania parametrów, które będą używane podczas instalowania konkretnego klejnotu


6
Z jakiegokolwiek powodu moja konfiguracja pakietu wymagała następujących elementów, aby znaleźć poprawną kompilację (która wykorzystuje instalację naparu z kodowania odpowiedzi uzależnionego poniżej) bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
— iturgeon

7

Nie sądzę, żebyś potrzebował therubyracerklejnotu na Windows. Jest to środowisko wykonawcze javascript korzystające z silnika V8. Dlatego podejmuje próbę instalacji libv8.

Możesz bezpiecznie usunąć klejnot ze swojego Gemfile.

Rails z przyjemnością korzysta z dowolnego środowiska wykonawczego, jakie może znaleźć. execjs, nodejsItd. Są wszystkie możliwe opcje.

Microsoft już osadza środowisko wykonawcze JScript dla javascript w systemie Windows, a Rails go używa. Zobacz to po więcej


6

Innym sposobem obejścia tego problemu jest rozdzielenie ich w pliku Gemfile

group :production do
 gem 'libv8', '~> 3.11.8.3'
 gem 'therubyracer', :platform => :ruby
end

Następnie uruchom polecenie bundle : zainstaluj pakiet - bez produkcji


Działa to dobrze w połączeniu z odpowiedzią @Litmus, ponieważ pokazuje, jak można zachować klejnot w konfiguracji (która prawdopodobnie będzie odpowiednia do wdrożenia) bez przerywania instalacji programistycznej w systemie Windows.
— glenatron

3

Nie mogłem również zainstalować tego klejnotu zamiast używać

--with-system-v8

raz spróbuj zrobić aktualizację pakietu, która działała dobrze dla mnie


3

znalazłem to na github

zakładając, że wypróbowałeś wyżej wymienione kroki, zainstalowałeś v8-315 i v8 przez brew.

brew unlink v8
brew link --force v8-315
gem install therubyracer -v '0.12.2' -- --with-system-v8

2

To działa dla mnie. Umieść to w swoim Gemfile

klejnot „libv8”, „~> 3.16.14.7”


to rozwiązanie doprowadziło mnie do, bundle install --no-deploymenta potem bundle installzadziałało dla mnie
— simo

2

Mój problem nie jest powiązany z therubyracerco wszystko tylko libv8gem i jak @ rishav-Bhardwaj wskazał --with-system-v8nie załatwi, zamiast musiałem Exec

bundle update

następnie

bundle install

i w końcu

Bundle complete!

Błąd zniknął!

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue. Make sure that `gem install libv8 -v '3.16.14.7'` succeeds before bundling.


1

W moim przypadku rozwiązałem tę sytuację, wymagając 'mini_racer', '~> 0.2.6' w moim Gemfile

Następnie działało polecenie instalacji pakietu.


0

Spróbuj z

gem „therubyracer”, „~> 0.10.2” do Gemfile

I zainstaluje zależną bibliotekę gem libv8 (3.3.10.4), a problem niepowodzenia wbudowanego rozszerzenia natywnego gem został rozwiązany.


0

Rozwiązany 3.16.14.7problem libv8 przy użyciu poniższej komendy:

gem install libv8 -v '3.16.14.7' -- --with-system-v8

A następnie bundle installpomyślnie zakończone.


0

czuję, że ma to mniej wspólnego z libv8, a więcej z therubyracerem.

otrzymałem ten sam błąd podczas instalacji pakietu w aplikacji Railsowej. jeśli spotkałeś się z tym podobnie, spróbuj zainstalować klejnot poza pakietem w następujący sposób:

gem install therubyracer

następnie uruchom instalację pakietu. mam nadzieję, że to też dla ciebie zadziała.


0

Miałem również problemy z używaniem libv8i mini_racer. Rozwiązano problem z

brew install v8

bundle update libv8 mini_racer

Korzystanie z najnowszych wersji mini_racer 0.2.10i libv8 7.3.492.27działało jak urok.


0

Próbowałem poniższych poleceń na moim lokalnym, działało dobrze:

brew install v8@3.15
gem install libv8 -v 'YOUR_VERSION' -- --with-system-v8
gem install therubyracer -v 'YOUR_VERSION' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.