"gem install therubyracer" nie działa na Mac OS X Lion
Będę wdzięczny za pomoc w podjęciu pracy. Oto błąd:
$ gem install therubyracer
Building native extensions. This could take a while...
ERROR: Error installing therubyracer:
ERROR: Failed to build gem native extension.
/Users/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
*** 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/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
--with-objclib
--without-objclib
extconf.rb:15:in `<main>': undefined method `include_path' for Libv8:Module (NoMethodError)
Oto kilka godnych uwagi kroków, które wykonałem przed błędem. Działały dobrze:
$ gem install libv8
$ brew install v8
Moje środowisko to:
- Mac OS X Lion 10.7.4
- ruby 1.9.3p194 (2012-04-20 wersja 35410) [x86_64-darwin11.4.0] (via RVM)
- V8 wersja 3.9.24 (via homebrew)
11 answers
To mi pomogło:
$ gem uninstall libv8
$ gem install therubyracer
(wielkie podziękowania dla http://www.ruby-forum.com/topic/4306127 )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-05 22:28:52
gem uninstall libv8
brew install v8
gem install therubyracer
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-17 23:31:34
Ale dlaczego tak się dzieje? I dlaczego odinstalowanie libv8
i ponowna instalacja therubyracer
rozwiązuje problem?
Odpowiedź znajduje się na dole Komunikatu o błędzie (z oryginalnego postu). Ignoruj rzeczy o
probably lack of necessary libraries and/or headers
Jest to błędne założenie tego, kto napisał ten Komunikat o błędzie. Na dole widzisz co Ruby ma do powiedzenia na ten temat:
undefined method `include_path' for Libv8:Module
W moim przypadku próbowałem zainstalować therubyracer-0.9.8
z bundle install
i z jakiegoś powodu próbował użyć mojej kopii z libv8-3.11.8.13
, który został zainstalowany w pewnym momencie, prawdopodobnie jako zależność od jakiegoś innego klejnotu.
Nie wiem, dlaczego próbował użyć nowszej wersji, ponieważ therubyracer.gemspec
zawiera s.add_dependency "libv8", "~> 3.3.10"
. A mój Gemfile.lock
mówi, żeby użyć libv8 (3.3.10.2)
. Ale niestety tak właśnie było.
I to prawda, że Libv8:Module
czy Nie ma metodę include_path
W libv8-3.11.8.13
, ale robi W libv8-3.3.10.2
Dlatego Odinstaluj wszystkie swoich wersji libv8
, a następnie ponowne zainstalowanie therubyracer
działa. Ponieważ wszystkie wersje libv8
że nie mają metoda include_path
są całkowicie usunięte, a libv8
że mA metoda include
ścieżka jest reinstalowana po ponownej instalacji therubyracer
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-24 16:09:31
Biorąc pod uwagę brak, jeśli powyższe działa dla mnie w 100%, pomyślałem, że opublikuję to, co zrobiłem (w ramach projektu rails):
gem uninstall libv8
bundle update therubyracer
To upewniło mnie, że otrzymałem najnowszą therubyracer
, a także nowszą wersję libV8
, i wydaje się naprawiać wiele problemów, które dotykałem, z braku libv8.plików, do niezdefiniowanych metod.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-03 14:53:11
W końcu używam therubyracer 0.11. 0beta5 jako rozwiązania.
Za pomocą therubyracer (0.11. 0beta5)
Dodaj following on Gemfile
gem 'therubyracer', '~> 0.11.0beta5'
group :libv8 do
gem 'libv8', "~> 3.11.8"
end
Then bundle install
Mac OSX 10.8 Moutain Lion
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-29 08:02:14
Jeśli potrzebujesz 0.11.3
i nie działa daj temu szansę na Mac OS X 10.9...
gem uninstall libv8
brew install v8
gem install libv8 -- --with-system-v8
gem install therubyracer -v '0.11.3' -- --with-system-v8
[[4]} Zobacz ten numer Po Więcej Szczegółów.
Prawdopodobnie nie potrzebujesz -- --with-system-v8
w ostatniej linii, ale zrobiłem to dla bezpieczeństwa, ponieważ zobaczyłem, że zaczyna działać Fetching: libv8-3.11.8.17-x86_64-darwin-13.gem (1%)
Kiedy uruchomiłem komendę...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-28 07:33:42
Dla każdego, kto napotkał ten problem na Mac OSX 10.8 Mountain Lion podczas próby uaktualnienia swojego Gemfile z gem 'therubyracer', '0.11.0'
, po prostu aktualizacja systemu libv8
gem zadziałała dla mnie (NIE odinstaluj żadnego innego gem):
$ gem update libv8
$ bundle install
Edytuj
Jeśli używasz Travis-CI (lub innych narzędzi CI znajdujących się na innych serwerach, zakładam), będziesz musiał wyraźnie dodać libv8
gem do swojego Gemfile jako cóż:
Gemfile
gem 'libv8', '3.11.8.3'
Potem bundle install
Jak zwykle. Zauważ, że instalacja libv8
może zająć sporo czasu i zauważyłem, że może to być przyczyną przekroczenia limitu czasu Travis CI, powodując awarię Twojej kompilacji. Możesz to nieco złagodzić, Nie włączając klejnotów środowiska programistycznego do swoich kompilacji: {]}
.travis.yml
# ...
bundler_args: --binstubs=./bundler_stubs --without development
Update
Tak, prawie wszystkie moje budowle Travis timeout I fail z tego powodu. Jeśli ktoś zna sposób na rozwiązanie tego problemu (mam nadzieję, że " downgrade therubyracer
" jest ostatecznością), proszę zostawić komentarz!
Update 2
To może nie działać dla wszystkich aplikacji, ale wydaje się, że moje aplikacje Rails 3.2.9 w rzeczywistości nie potrzebowały therubyracer
lub libv8
. Po usunięciu tych klejnotów z mojego Gemfile , potwierdziłem, że moje specyfikacje przeszły, ponownie pchnąłem do Travisa i udało się je zbudować. Czyli chyba pozbycie się tych klejnotów (jeśli jesteś Nie wiem, czy rzeczywiście ich potrzebujesz) jest przynajmniej warte wypróbowania.
Update 3
Podziękowania dla Paul Annesley za potwierdzenie, że jeśli jesteś na Mac OS X 10.8 Mountain Lion, nie potrzebujesz therubyracer
gem w ogóle, ponieważ system jest już dostarczany z Apple JavaScriptCore, własnym Javascript runner. W czasie oryginalnej odpowiedzi byłem na Snow Leopardzie i dlatego go potrzebowałem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:00
Dla mnie usunięcie Gemfile.lock file and running bundle install
worked it ' s magic.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-19 04:59:28
OSX 10.8.2, ruby 1.9.3p125
Żadne z powyższych nie zadziałało... Miałem dość szukania odpowiedniego klejnotu dla mojego środowiska, więc po prostu połączyłem się z celem g++, którego tego brakowało: {]}sudo ln -s `which g++` /usr/bin/g++-4.2
Nie tak pomocny dla zdalnych wdrożeń, ale wykonaj zadanie na mojej stacji roboczej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-08 04:21:33
Mam podobny problem, ale narzekał też na to, że nie znalazłem g++-4.2. I did have Xcode command line tools installed, but it was looking for / usr / bin / g++-4.2, I had g++ (który był dowiązaniem symbolicznym wskazującym na llvm-g++-4.2). W każdym razie, właśnie stworzyłem dowiązanie symboliczne do g++ i próbowałem ponownie zainstalować pakiet... zadziałało!
$ cd /usr/bin
$ sudo ln -s g++ g++-4.2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-19 18:10:06
Miał ten sam błąd, to działało dla mnie:
Z konsoli:
gem uninstall libv8
-
W Twoim Gemfile dodaj:
gem 'therubyracer', :platforms => :ruby, :require => 'v8' gem 'libv8', '~> 3.11.8' # Update version number as needed
Z konsoli:
bundle install
Jeśli byłeś w trakcie ulepszania klejnotu therubyracer, możesz uruchomić bundle update therubyracer
również po tym. (Rozważ podanie numeru wersji)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-07 01:05:52