"gem install therubyracer-v '0.10.2 '" na osx mavericks nie instaluje

Próbuję zainstalować therubyracer na mavericks używając "Gem install therubyracer-v '0.10.2'", ale dostaję następujący błąd:

/Users/dennischen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
creating Makefile

make
compiling rr.cpp
clang: warning: argument unused during compilation: '-rdynamic'
rr.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_array.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_callbacks.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_context.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_date.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_debug.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_exception.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_exception.cpp:10:16: warning: unused variable 'stack' [-Wunused-variable]
  static void* stack[20];
               ^
1 warning generated.
compiling v8_external.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_external.cpp:10:9: warning: unused variable 'references' [-Wunused-variable]
  VALUE references;
        ^
1 warning generated.
compiling v8_function.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_handle.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_locker.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_locker.cpp:45:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
v8_locker.cpp:85:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
2 warnings generated.
compiling v8_message.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_object.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_object.cpp:77:19: warning: unused variable 'proto' [-Wunused-variable]
    Handle<Value> proto(rr_rb2v8(prototype));
                  ^
1 warning generated.
compiling v8_script.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_string.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_template.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_try_catch.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_value.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_value.cpp:100:9: warning: unused function 'ToInt32' [-Wunused-function]
  VALUE ToInt32(VALUE self) {
        ^
1 warning generated.
compiling v8_weakref.cpp
clang: warning: argument unused during compilation: '-rdynamic'
linking shared-object v8.bundle
clang: error: no such file or directory: '/Users/dennischen/.rvm/gems/ruby-1.9.3-p194@panini/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1
Czy ktoś może mi pomóc dowiedzieć się, jak uruchomić ten klejnot? Mam zainstalowane narzędzia wiersza poleceń.
Author: user2711889, 2013-10-28

12 answers

Jeśli zdecydujesz się użyć nowszej wersji therubyracer gem, nie będziesz już miał tego problemu

Inaczej:

brew tap homebrew/dupes # Thanks Tom
brew install apple-gcc42

export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2

brew uninstall v8

gem uninstall libv8

gem install therubyracer -v '0.10.2' # specify version
 242
Author: Julian Popov,
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-02-10 16:20:13

Więc w końcu udało mi się go uruchomić po kilku trudnościach... dzięki Simonowi i Alvaro.

Mam jednak jedną rzecz do dodania, użycie flagi -- with-system-v8 nie działało dla mnie... Więc usunąłem mój system v8 z

brew uninstall v8

I bieg

gem install libv8

Jeśli uruchomiłeś już gem install libv8 z flagą system v8, pamiętaj, aby odinstalować tę wersję gem (wykonaj to uruchamiając gem uninstall libv8). Ważne jest to, że nie należy używać tego dostarczonego przez brew, nie wydaje się praca w Mavericks (zostanie dobrze zainstalowany i bundler zgłosi, że pakiet jest kompletny, ale aplikacja nie powiedzie się, gdy spróbuje użyć v8).

Aby podsumować odpowiedź, wykonując następujące czynności, zadziałało dla mnie:

brew install apple-gcc42
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

brew uninstall v8
gem install libv8
gem install therubyracer
 16
Author: damianmr,
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-12-11 15:11:35

Miałem ten sam problem, to mi działa:

Therubyracer (0.10.2) & libv8 (3.3.10.4)

Po Pierwsze:

  • brew install apple-gcc42
  • musisz połączyć wszystkie pliki binarne kompilatorów (gcc, cpp, g++) do /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

Po, możesz spróbować tego:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer' lub bundle install do katalogu projektu rails.
 10
Author: Alvaro,
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-11-03 19:01:46

Właśnie miałem ten sam problem i jednym rozwiązaniem jest obecnie aby użyć apple-gcc42 zamiast clang do kompilacji obu klejnotów:

brew install apple-gcc42

I wtedy masz wybór pomiędzy wykonaniem dowiązań symbolicznych w /usr/bin dla binariów {gcc,g++,c++}:

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

W rzeczywistości g++ powinno wystarczyć.

Lub...możesz wyeksportować zmienne środowiskowe CC/CXX / CPP ze ścieżkami odpowiadającymi binariom utworzonym przez homebrew. To na pewno czyściciel obejście.

Trzecim rozwiązaniem jest pobranie Xcode 4.6.3 i zainstalowanie go w folderze Applications . Następnie wprowadź w terminalu:

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer

Po zainstalowaniu gem możesz przełączyć się z powrotem na Xcode 5.0:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
 7
Author: Simon,
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-10-28 19:41:38

Znalazłem obejście, które działało bez instalacji apple-gcc42.

To zadziała, jeśli otrzymany komunikat o błędzie wygląda tak:

clang: error: no such file or directory: '/Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'

Wtedy powinieneś być w stanie wykonać następujące czynności:

brew install v8
bundle install 
# after failing create link from brew installed v8 to error location
ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a /Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
bundle install

Źródło: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348

 6
Author: M. Scott Ford,
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-12 20:40:09

Jak sugerowano w wielu odpowiedziach, najprostszą rzeczą do zrobienia jest skompilowanie natywnych rozszerzeń Ruby Racer z Apple GCC 4.2 (zamiast wersji zainstalowanej z Xcode).

Jeśli używasz MacPorts, nie powinieneś ręcznie zajmować się konfigurowaniem dowiązań symbolicznych dla binariów GCC. Polecenie {[1] } robi to za Ciebie. Jeśli nie zaktualizowałeś MacPorts od czasu instalacji Mavericks, wykonaj sudo port selfupdate. Z MacPorts up-to-date, spróbuj:

# If you don't have it, install the port for Apple's GCC 4.2
sudo port install apple-gcc42 

    # OR

# If you had apple-gcc42 already (before Mavericks), update it
sudo port upgrade apple-gcc42


# Same result as manual symlinking of GCC in other answers
sudo port select gcc apple-gcc42 && hash -r

# Install therubyracer, will install libv8 gem dependency
#  *note* if you have any existing versions of these gems, remove them
gem install therubyracer

# Restore GCC to system default (optional)
sudo port select gcc none && hash -r

Ogólnie ta procedura (sudo port select gcc [version]) będzie działać w dowolnym momencie, gdy chcesz użyć konkretnej wersji GCC zamiast tej zainstalowanej przez Xcode (Apple LLVM v5 dla 10.9 Mavericks/Xcode 5).

 3
Author: jshkol,
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-11-18 17:33:52

Udało mi się zainstalować therubyracer 0.12 i libv8 3.16.14.3 na ruby 2.0. 0p353 i os X 10.9

Libv8 wymaga gcc42

brew install v8
brew install apple-gcc42
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp
gem install libv8

Therubyracer wymaga późniejszego gcc

brew install gcc49
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/gcc-4.9 /usr/bin/gcc
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/g++-4.9 /usr/bin/g++
sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/cpp-4.9 /usr/bin/cpp

Gemfile

gem 'therubyracer', :require => 'v8', :platforms => :ruby

Użyj bundle zamiast gem install therubyracer

 3
Author: Eugene,
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-11-24 10:14:43

To powinien być bezpieczny i czysty sposób (bez dowiązań symbolicznych), aby zainstalować therubyracer dla każdego, kto ma problemy.

Pochodzi z: gem install therubyracer-V 0.11.4 fails on OS X 10.10

Zainstaluj Xcode (jeśli nie masz jeszcze jednej z tych wersji) 6.1.1, 6.2-beta lub 6.3-beta i (ta jest potrzebna) 4.6.3

gem uninstall libv8 jeśli jeszcze tego nie zrobiłeś

Przełącz na Xcode 4.6.3

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer

gem install libv8 -v '3.11.8.17' lub która wersja jest powiązana z twoją wersją of theerubyracer

Przełącz na Xcode 6.1.1, 6.2-beta lub 6.3-beta (lub jeśli chcesz wypróbować aktualną instalację Xcode, dostosuj tę linię, potwierdziłem wszystkie 3 z tych prac)

sudo xcode-select --switch /Applications/Xcode6.1.1.app/Contents/Developer

gem install therubyracer -v '0.11.4' lub wersję, którą próbujesz zainstalować.

 3
Author: Travis,
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 11:53:20

Miałem prawie identyczny błąd podczas próby zainstalowania therubyracer 0.12.0, aby uruchomić go z libv8. To mi się udało:

$ brew upgrade gcc

$ gem uninstall therubyracer

$ gem uninstall libv8

$ gem install therubyracer -v '0.12.0'
Fetching: therubyracer-0.12.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed therubyracer-0.12.0
1 gem installed

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions with: '--with-system-v8'
This could take a while...
Successfully installed libv8-3.16.14.3
1 gem installed
 1
Author: Javid Jamae,
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
2016-01-14 08:59:28

Miałem ten sam problem, gdy uaktualniłem z OSX Mountain Lion do OSX Mavericks.

Aktualizacja z ruby-1.8.7-p354 do ruby-1.8.7-375 załatwiła mi sprawę.

Może spróbuj uaktualnić z ruby 1.9.3-p194 do rc1 (1.9.3 jest teraz powyżej p484)

Zakładając, że używasz rbenv:

rbenv install 1.9.3-rc1
rbenv rehash
rbenv global 1.9.3-rc1
bundle install
 0
Author: nelsonenzo,
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-05 03:22:59

Miałem ten problem po aktualizacji z Mavericks do Yosemite. Problem polegał na tym, że skompilowałem moją wersję Ruby ze starą wersją OSX.

If I ran

ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)'

Dostałbym x86_64-darwin-13 zamiast x86_64-darwin-14 za Yosemite.

Aby ponownie zainstalować Ruby I

  1. całkowicie usunięta stara wersja: rvm remove ruby-2.1.1
  2. ponownie zainstalowany ze źródła (--disable-binary nie używa wstępnie skompilowanych binariów i wymusza kompilację): rvm reinstall --disable-binary 2.1

Wtedy byłem w stanie uruchomić bundle install bez błędów po wypróbowaniu wszystkich powyższych rozwiązań.

 0
Author: Moemars,
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
2015-04-30 04:28:21

To co zrobiłem to na osx mavericks:

git clone [email protected]:cowboyd/therubyracer.git

Wtedy:

gem build therubyracer.gemspec
gem install therubyracer-0.12.1.gem

Ta procedura pobrała binarną wersję libv8 i zainstalowała ją.

 -2
Author: darmou,
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-22 00:38:19