Próbuję zainstalować następujące wersje klejnotów na Mavericks
- libv8 (3.16.14.3)
- therubyracer (0.12.1)
Oczywiście therubyracer gems zależy od libv8.
1) Instalowanie libv8
Co to jest libv8? Moje badania wydają się wskazywać, że jest to jakaś biblioteka javascript używana przez Google Chrome?
Miałem problem z instalacją, ale ten wspaniały post zawierał zarówno mój błąd, jak i dobrze wyjaśnioną odpowiedź, jak go ominąć.
Więc zainstalowałem libv8
z
gem install libv8 -- --with-system-v8
Rozumiem, że to instaluje klejnot, ale używa mojej lokalnej instalacji systemu biblioteki v8 zamiast ... wersji, która jest dostarczana z klejnotem? Tak czy inaczej, udało się.
2) Instalacja śruby do rozrusznika
Podczas następnego kroku miałem problem z instalacją therubyracer
gem. Nie jestem do końca pewien, co robi ten klejnot, tylko, że jest to zależność projektu railsowego, do którego próbuję bundle install
.
Daje mi następujący błąd:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** 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
--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/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
--with-pthreadlib
--without-pthreadlib
--with-objclib
--without-objclib
--enable-debug
--disable-debug
--with-v8-dir
--without-v8-dir
--with-v8-include
--without-v8-include=${v8-dir}/include
--with-v8-lib
--without-v8-lib=${v8-dir}/lib
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in
'configure': You have chosen to use the version of V8 found
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location
thanks,
The Mgmt
from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
from extconf.rb:32:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out
Z tego, libv8
co udało mi się zebrać, zdecydowałem się zainstalować przy użyciu mojej lokalnej biblioteki V8 zamiast tego, co zostało dostarczone libv8
, ale teraz nie można zlokalizować lokalnej instalacji.
- Jak sprawdzić, czy rzeczywiście mam zainstalowaną wersję V8 i jak ją zlokalizować?
- Wypróbowałem kilka z określonych flag, żadna z nich nie wskazywała klejnotu na właściwy katalog instalacyjny
- To może być osobny temat, ale co nim jest
extconf.rb
? Widziałem to w kilku miejscach. A cogcc
konkretnie próbuje zrobić z kompilatorem?
Dzięki!!
EDYTOWAĆ:
Wypróbowałem to rozwiązanie polegające na odinstalowaniu libv8 i ponownej instalacji przez
brew install
. Wspomniano o tym również w kilku podobnych pytaniach. Brak szczęścia.Próbowałem również
CC
,CXX
iCPP
zmiennych środowiskowych, jak opisano tutaj , chociaż nie sądzę, że ma żadnego wpływu, gdyż została już podnosząc mójgcc v4.6
kompilatora.
źródło
Odpowiedzi:
Te kroki zadziałały dla mnie.
System operacyjny: Maverick Ruby: 2.1.1
gem uninstall libv8 gem install therubyracer -v '0.11.3' gem install libv8 -v '3.11.8.13' -- --with-system-v8
źródło
Dla tych, którzy borykali się z tym problemem w OS X El Capitan, to rozwiązanie z wątku z grubego wskaźnika było tym, co ostatecznie zadziałało:
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
Biegałem też
brew install gcc
wcześniej, ale nie jestem pewien, czy było to rzeczywiście konieczne.źródło
gem install libv8 -v 'A.B.C.D'
w razie potrzeby. W chwili pisania tego tekstu jest 3.16.14.15.gem install therubyracer -v 'x.x.x' -- --with-v8-dir=/usr/local/opt/v8-315
Spróbuj najpierw odinstalować libv8 gem, następnie zainstaluj rubyracer, a następnie libv8
gem uninstall libv8 gem install therubyracer gem install libv8 -- --with-system-v8
źródło
libv8
wcześniejtherubyracer
działa lepiej.Tertom za rozwiązanie zamieszczone na github rozwiązać go dla mnie, po wypróbowaniu wszystkich innych rozwiązań proponowanych w danym numerze github i tutaj.
Miałem dokładnie taką samą konfigurację systemu.
To jest na el capitan, więc nie jest to dokładna odpowiedź na pytanie, ale ludzie mogą uznać te informacje za pomocne.
Cytuję to tutaj dla lepszej widoczności:
źródło
bundle config build.libv8 --with-system-v8
był dla mnie kluczem. Dzięki!brew link --force v8-315
zadziałało dla mnie. 2/2020 - MacOS 10.15.3. - Ruby w wersji 1.9.3 - Bundler 1.16.4 - libv8 w wersji 13.16.14.19Dla wszystkich, którzy używają macOS 10.15, napar się zmienił, więc będziecie musieli wykonać te polecenia.
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/[email protected] bundle install
źródło
Powyższe odpowiedzi nie działają dla mnie; moja konfiguracja pakietu jest
disable-shared-gems
włączona, co powoduje dodatkowe problemy.Używam Yosemite 10.10.1, Rails 3.2.x i Ruby 1.9.3p550.
Poniższy fragment
bin/setup
kodu w moim rozwiązał problem.if ! bundle show therubyracer; then bundle config build.libv8 --with-system-v8 gem install --install-dir vendor/bundle libv8 -v 3.16.14.7 gem install libv8 -v 3.16.14.7 gem install --install-dir vendor/bundle therubyracer fi
źródło
Znalazłem obejście powyższego problemu.
Jest to bardziej zgodne z libv8 i therubyracer.
gem install libv8 -v '3.3.10.4' -- --with-system-v8 gem install therubyracer -v '0.10.2'
To powinno działać dobrze, ponieważ obie wersje są ze mną kompatybilne. Początkowo próbowałem zainstalować wersję 0.12.0 dla therubyracer i napotkałem problem. Po przełączeniu na wersję 0.10.2 wszystko działało dobrze.
Mój obecny system operacyjny: Mavericks
źródło
Mam ten problem dla
MacOS Mojave 10.14.2
i udało mi się go naprawić, gdy znalazłem, gdzie pakietv8-315
został zainstalowany i jaka była nazwa folderu. W moim przypadku to było tutaj/usr/local/opt/[email protected]
.Aby to naprawić, uruchomiłem dalej:
brew install v8-315 gem install libv8 -v '3.16.14.15' -- --with-system-v gem install therubyracer -v '0.12.2' -- --with-system-v8 --with-v8-dir=/usr/local/opt/[email protected] bundle install
źródło
Po złamaniu głowy przez prawie dwa dni to zadziałało.
rvm install 2.2.2 gem install rails bundle install
źródło
Nie mogłem zmusić therubyracer do zbudowania na macOS Catalina 10.15 ze względu na zależność od libv8, pomimo zainstalowania x64 (wariant 64-bitowy) libv8.
Rozwiązaniem dla mnie było przejście z therubyracer na mini_racer, zainstalowany klejnot mini_racer (bez konieczności budowania lokalnie) i, hej presto! Mógłbym kontynuować.
Spróbuj!
źródło
W moim przypadku
MacOS: Catalina , Ruby: 2.3.3 , Using rbenv (not RVM), I Required therubyracer version: 0.12.3 (nie ma znaczenia)
Wypróbowałem wszystkie rozwiązania, ale co mi zadziałało, drodzy proszę nie kopiuj na ślepo rozwiązania wklejania (bcz zrobiłem w moim przypadku), najpierw przeczytaj, a następnie zmień wersje w poniższych poleceniach, jeśli jakieś potrzebujesz. Większość poleceń jest powszechna w większości istniejących odpowiedzi, ale to, co zadziałało dla mnie
gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)
zamiastgem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315
Podziękowania dla Junji Zhi za komentarz w tej odpowiedzi1. brew install gcc 2. brew tap homebrew/versions (If it wont work then below 2 steps, for latest MacOS version) 2.a. brew tap brewsci/bio 2.b. brew tap brewsci/science 3. brew install v8-315 (uninstall if v8 installed previously without '-315') 4. gem install libv8 -v '3.16.14.19' -- --with-system-v8 (Be careful with the libv8 version mentioned in this command, replace version number with one required) 5.a. gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315 (If it does not work then try below one, In my case below command worked) 5.b. gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)
Gotowe, a następnie kontynuuj z
bundle install
Uwaga : Podczas instalacji gemów therubyracer sprawdź, która wersja libv8 jest instalowana, jeśli jest inna niż ta, o której wspomniałem w kroku 4 , twój therubyracer może się nie zainstalować, więc po prostu zrób jedną rzecz,
gem uninstall libv8
a następnie powtórz krok 4 , zmieniając wersja , którą można zobaczyć w konsoli podczas montażu rubyracerźródło
To zadziałało dla mnie:
gem install libv8 -v '3.16.14.17' -- --with-system-v8 brew install v8-315 gem install therubyracer -v '0.12.3' --source 'http://rubygems.org/' -- --with-v8-dir='/usr/local/opt/[email protected]'
Dla ostatniego polecenia sprawdź wyjście
brew --prefix v8-315
w moim przypadku to było/usr/local/opt/[email protected]
.źródło
Poniższe polecenia rozwiązały to dla mnie w Catalinie z pakietem
$ brew install v8@3.15 $ bundle config build.libv8 --with-system-v8 $ bundle config build.therubyracer --with-v8-dir=$(brew --prefix v8@3.15) $ bundle install
źródło
Zauważyłem, że kiedy napotkamy problem:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension
Następnie powinieneś zainstalować build-essential
sudo apt install build-essential
U mnie działa z problemami z instalacją mini_race.
źródło
Po prostu uruchomiłem aktualizację pakietu i zadziałało.
Obs .: Korzystanie z Ruby 2.3.0
źródło