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.

Paciorecznik
źródło
Czy zainstalowałeś Devkit github.com/oneclick/rubyinstaller/wiki/Development-Kit
Amit Thawait
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

Gopal S. Rathore
źródło
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
Arpit Shah
źródło
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.

kodowanie uzależnione
źródło
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

Anand Chavan
źródło
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

Lakmus
źródło
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

Arman Ortega
źródło
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

Rishav Bhardwaj
źródło
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
Sojan V Jose
źródło
2

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

klejnot „libv8”, „~> 3.16.14.7”

Hrk
źródło
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.

d1jhoni1b
źródło
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.

Tomas Radic
źródło
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.

Rahul Patil
źródło
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.

Faisal Raza
źródło
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.

Sean M.
źródło
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.

anka
źródło
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
Rintu George
źródło