osx mavericks에 "gem install therubyracer -v '0.10.2'"가 설치되지 않음


90

"gem install therubyracer -v '0.10.2'"를 사용하여 mavericks에 Rubyracer를 설치하려고하지만 다음과 같은 오류가 발생합니다.

/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

누구든지이 보석을 작동시키는 방법을 알아낼 수 있습니까? 명령 줄 도구가 설치되어 있습니다.


가지고 homebrew있습니까? 사용 V8을 설치하려고 brew install v8설치 보석 전
이반 Shamatov에게

brew install v8은 별도의 문제라고 생각합니다. brew가있는 v8에 대한 자세한 내용 은 stackoverflow.com/questions/11598655/therubyracer-install-error 를 참조하십시오 .
Ash Blue

답변:


242

최신 therubyracergem 버전 을 사용하기로 결정 하면 더 이상이 문제가 발생하지 않습니다.

그렇지 않으면:

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

11
이러한 접근 방식은 수정 심볼릭 링크보다 더 나은 것 같다
Nilesh

3
brew tap homebrew/dupes수정 "오류 : apple-gcc42에 대한 사용 가능한 공식 없음"
TomFuertes

1
이것은 마침내 문제를 해결했습니다. 감사합니다! 아래에서 M. Scott Ford의 심볼릭 링크 솔루션을 시도해 보았고 작동 하는 것처럼 보였지만 실제로 어떤 작업 (레이크, 레일 등)을 시도 할 때 오류가 발생했습니다.
Kyle Fox

2
Rubyracer 0.12.0으로 업데이트하면이 문제가 해결되었습니다.
jackocnr

6
불행히도 이러한 솔루션 중 어느 것도 OSX 10.9, ruby ​​2.1.0 및 therubyracer 0.12.1에서 작동하지 않습니다.
turboladen

16

그래서 마침내 어려움을 겪은 후에 작동하게되었습니다. Simon과 Alvaro 덕분입니다.

추가해야 할 것이 하나 있습니다 .-- with-system-v8 플래그를 사용하면 저에게 작동하지 않았습니다 ... 그래서 시스템 v8을 제거했습니다.

brew uninstall v8

그리고 실행

gem install libv8

gem install libv8시스템 v8 플래그로 이미 실행 한 경우 해당 gem 버전을 제거해야합니다 (실행하여 수행 gem uninstall libv8). 중요한 것은 brew에서 제공하는 것을 사용하지 말아야한다는 것입니다. Mavericks에서 작동하지 않는 것 같습니다 (잘 설치되고 번 들러가 번들이 완료되었다고보고하지만 v8을 사용하려고하면 앱이 실패합니다. ).

대답을 요약하면 다음을 수행하는 것이 효과적이었습니다.

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

2
이것은 나를 위해 일했습니다. 하지만 gcc를 / usr / local / bin에 심볼릭 링크하고 터미널을 다시 시작하여 libv8을 설치 한 후 제거 할 수있었습니다.
Jamon Holmgren 2013

2
특정 버전의 homebrew 바이너리를 / usr / bin으로 대칭 연결하는 것은 정말 나쁜 생각입니다. 다음 brew update경로가 따라오고 회전하는 것은 당신을 깨진 상태로 남겨 둘 것입니다.
mrm

10

나는 같은 문제가 있었고 이것은 나를 위해 작동합니다.

therubyracer (0.10.2) 및 libv8 (3.3.10.4)

가장 먼저:

  • brew install apple-gcc42
  • 컴파일러의 모든 바이너리 파일 (gcc , cpp, g++에)/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

그 후에 다음을 시도해 볼 수 있습니다.

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer'또는 bundle installrails 프로젝트의 디렉토리에.

apple-gcc42: This formula either does not compile or function as expected on macOS 내 macOS는 10.12.6입니다
Wylliam Judd

7

나는 방금 같은 문제가 있었고 한 가지 해결책은 현재 clang 대신 apple-gcc42 를 사용 하여 두 gem을 모두 컴파일하는 것입니다.

brew install apple-gcc42

그런 다음 {gcc, g ++, c ++} 바이너리에 대해 / usr / bin에서 심볼릭 링크를 수행하는 것 중에서 선택할 수 있습니다.

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

사실 g ++ 이면 충분합니다.

또는 ... homebrew에서 생성 한 바이너리에 해당하는 경로로 CC / CXX / CPP 환경 변수를 내보낼 수 있습니다. 확실히 더 깨끗한 해결 방법입니다.

세 번째 해결 방법은 Xcode 4.6.3을 다운로드하여 Applications 폴더 에 설치하는 것입니다 . 그런 다음 터미널에 입력하십시오.

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

gem이 설치되면 Xcode 5.0으로 다시 전환 할 수 있습니다.

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

컴파일러를 apple-gcc42로 어떻게 전환합니까?
user2711889

@Simon 컴파일러에 symlinc를 시도하면 파일이 존재한다는 메시지가 나타납니다. 그게 clang 파일인가요? bundle install을 실행하면 오류가 clang 참조로 가득 차 있기 때문에 gcc를 사용하지 않는 것 같습니다.
isea

MacPort를 사용하는 경우 다른 GCC 버전을 가리 키기 위해 심볼릭 링크 할 필요가 없으며 이에 대한 내장 명령이 있습니다 (내 대답 참조).
jshkol 2013

6

apple-gcc42를 설치하지 않고 작동하는 해결 방법을 찾았습니다.

표시되는 오류 메시지가 다음과 같은 경우 작동합니다.

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'

그러면 다음을 수행 할 수 있습니다.

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

출처 : https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348


이것에 대한 엄청난 +1. gem은 CLI에 설치되지만 RubyMine v6는 설치를 거부했습니다.이 심볼릭 링크를 설정하면 마침내 문제가 해결되었습니다. 감사!
Ode

1
이 1000 %는 @ M.ScottFord를 응원합니다. 저는 rvm을 사용하므로 ln 문은 다음과 같습니다.ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a ~/.rvm/gems/ruby-1.9.3-p327/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
Dave Foster

3

많은 답변에서 제안했듯이 가장 쉬운 방법은 Xcode와 함께 설치된 버전 대신 Apple GCC 4.2로 Ruby Racer 기본 확장을 컴파일하는 것입니다.

MacPort를 사용하는 경우 GCC 바이너리에 대한 심볼릭 링크 설정을 수동으로 처리 할 필요가 없습니다. port select명령은 당신을 위해 그것을 않습니다. Mavericks를 설치 한 후 MacPorts를 업데이트하지 않은 경우 sudo port selfupdate. MacPorts가 최신 상태 인 경우 다음을 시도하십시오.

# 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

일반적으로이 절차 ( sudo port select gcc [version])는 Xcode (10.9 Mavericks / Xcode 5 용 Apple LLVM v5)에서 설치된 버전 대신 특정 GCC 버전을 사용하려는 경우 언제든지 작동합니다.


1
매버릭에서 나를 위해 일했습니다.
Evo_x 2014 년

3

ruby 2.0.0p353 및 os x 10.9에 Rubyracer 0.12 및 libv8 3.16.14.3을 설치합니다.

libv8에는 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에는 나중에 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

bundle대신 사용gem install therubyracer


감사! 이것은 마침내 bundle install며칠의 시행 착오 끝에 나를 지나갔습니다 . 내가 다르게 한 유일한 일은 Apple LLVM 버전이고 Xcode로 구성되었다고보고 brew될 때까지 설치된 모든 개발자 도구를 제거한 gcc --version다음 /usr/bin/gccapple-gcc42를 심볼릭 링크하기 전에 기존 (et. al.)을 제거했습니다. libs, 그런 다음 gcc49를 설치하는 대신 (마지막으로 구성을 시도했습니다) 원래 gcc, g ++ 및 cpp libs를 다시 복사했습니다. 저에게 효과가있는 방법을 찾기 위해 30 가지 다른 방법을 시도했음을 감안할 때 YMMV
Chris Bloom

3

이것은 문제가있는 사람을 위해 Rubyracer를 설치하는 안전하고 깨끗한 방법 (심볼 링크 없음)이어야합니다.

출처 : 출처 gem install therubyracer -v 0.11.4가 OS X 10.10에서 실패합니다.

Xcode를 설치하십시오 (이 버전 중 하나가 아직없는 경우) 6.1.1, 6.2- 베타 또는 6.3 베타 및 (이것이 필요합니다) 4.6.3

gem uninstall libv8 아직하지 않았다면

Xcode 4.6.3으로 전환

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

gem install libv8 -v '3.11.8.17' 또는 해당 버전의 therubyracer에 연결된 버전

Xcode 6.1.1, 6.2- 베타 또는 6.3- 베타로 전환하십시오 (또는 현재 Xcode 설치를 시도하려면이 줄을 조정하십시오.이 세 가지 작업을 모두 확인했습니다)

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

gem install therubyracer -v '0.11.4' 또는 설치하려는 버전입니다.


1
감사합니다 @ th01 이것은 나를 위해 일했습니다 ... 나는 3 시간 동안 찾을 수있는 모든 것을 시도했습니다 ... 제 경우에는 libv8 gem이었습니다. Xcode4.6.3을 다운로드하고 해당 버전으로 실행했으며 성공적으로 설치되었습니다. 다음은 여러 Xcode 버전을 설치하는 방법에 대한 빠른 자습서 링크입니다. blogs.oracle.com/mobile/entry/how_to_install_multiple_xcodes
miligraf

Xcode 4.6.3을 다운로드 한 다음 실행 sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer하고 실행 gem install libv8 -v '3.3.10.4'하면 다음과 같은 메시지 가 나타납니다. unable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly! 내가 잘못하고있는 작업은 무엇입니까?
Wylliam Judd

1

libv8에서 작동하도록 Rubyracer 0.12.0을 설치하려고 할 때 거의 동일한 오류가 발생했습니다. 이것은 나를 위해 일했습니다.

$ 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

0

OSX Mountain Lion에서 OSX Mavericks로 업그레이드 할 때도 이와 동일한 문제가 발생했습니다.

ruby-1.8.7-p354에서 ruby-1.8.7-375로 업그레이드하는 것이 저에게 트릭이었습니다.

루비 1.9.3-p194에서 rc1로 업그레이드 해보십시오 (1.9.3은 현재 p484 이상임).

rbenv를 사용한다고 가정합니다.

rbenv install 1.9.3-rc1
rbenv rehash
rbenv global 1.9.3-rc1
bundle install

0

Mavericks에서 Yosemite로 업그레이드 한 후이 문제가 발생했습니다. 문제는 이전 버전의 OSX로 Ruby 버전을 컴파일했다는 것입니다.

내가 달리면

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

나는 x86_64-darwin-13대신 얻을 것이다x86_64-darwin-14 요세미티 .

Ruby I을 다시 설치하려면

  1. 완전히 제거 된 이전 버전 : rvm remove ruby-2.1.1
  2. 소스에서 다시 설치 (--disable-binary는 사전 컴파일 된 바이너리를 사용하지 않고 빌드를 강제 실행 함) : rvm reinstall --disable-binary 2.1

그런 다음 bundle install위의 모든 솔루션을 시도한 후 오류없이 실행할 수있었습니다 .


-2

내가 한 일은 osx mavericks에 대한 것입니다.

git clone git@github.com:cowboyd/therubyracer.git

그때:

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

이 절차는 libv8 바이너리 버전을 다운로드하여 설치했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.