OS X 10.9 이상에 libv8 gem 설치


212

libv8 3.16.14.3을 설치하려고하지만 최신 안정 rvm 및 ruby-1.9.3-p125를 사용하여 OSX Mavericks에서 오류가 발생합니다.

다음은 'gem install libv8'명령을 실행 한 결과입니다.

~/src(branch:master) » gem install libv8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
  ERROR: Failed to build gem native extension.

    /Users/me/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb
creating Makefile
Compiling v8 for x64
Using python 2.7.5
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Using compiler: g++
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
make[1]: *** [/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a] Error 1
make: *** [x64.release] Error 2
/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
  from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each'
  from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!'
  from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:26:in `install!'
  from extconf.rb:7:in `<main>'
GYP_GENERATORS=make \
  build/gyp/gyp --generator-output="out" build/all.gyp \
                -Ibuild/standalone.gypi --depth=. \
                -Dv8_target_arch=x64 \
                -S.x64  -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/conversions.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/diy-fp.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fast-dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fixed-dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/once.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparse-data.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser-api.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/scanner.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/strtod.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/token.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/unicode.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/utils.o
  LIBTOOL-STATIC /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a


Gem files will remain installed in /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3 for inspection.
Results logged to /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/gem_make.out

답변:


463

이는 OS X 10.9 이상이 GCC 버전 4.8을 사용하고 있기 때문입니다. 풀 요청 ( https://github.com/cowboyd/libv8/pull/95 )에 언급 된대로 이전 버전의 libv8에서는 공식적으로 지원되지 않습니다 . Gemfile (또는)에서 libv8 버전을 향상 시키십시오 bundle update. 도움이 되었기를 바랍니다.

libv8 README에서

자신의 V8을 가져와

libv8은 Rubyracer에서 사용하는 V8 엔진의 인터페이스이므로 V8이 이미 설치되어 있어도 libv8을 사용해야합니다. V8 설치를 사용하지 않고 직접 설치하려면 --with-system-v8 옵션을 사용하십시오.

RubyGems 사용하기 :

gem install libv8 [-v YOUR_VERSION]---with-system-v8

번 들러 사용 (Gemfile에서) :

bundle config build.libv8 --with-system-v8

자신의 V8을 실행하려면 V8과 헤더 (데비안 배포판 용 libv8-dev에 있음)를 모두 설치해야합니다.

자신의 컴파일러 가져 오기

컴파일 전에 CXX 환경 변수를 설정하거나 번들 구성에 --with-cxx = 옵션을 추가하여 원하는 컴파일러를 지정할 수 있습니다.

번들 설정 build.libv8 --with-cxx = clang ++

편집하다:

이 문제가 발생한 경우 rider_on_rails 에서therubyracer 제안한대로 다음을 시도 하십시오 .

gem 제거 libv8

gem 설치 Rubyracer -v YOUR_RUBY_RACER_VERSION

gem install libv8 -v YOUR_VERSION---with-system-v8


불행히도 작업중 인 프로젝트에서 libv8 버전을 변경할 수 없습니다. 지금은 OSX 10.8로 다운 그레이드 할 것입니다!
tanookiben

35
--with-system-v8FTW!
JPowell

24
감사! bundle config build.libv8 --with-system-v8 도와주세요!
Andrey Skuratovsky

7
bundle update저림과 사과 업그레이드 관련 불행의 영역에서 나를
물리 쳤다

6
누군가 therubyracer이것을 해결 한 후 gem에 다음과 같은 문제가 발생하는 경우 : stackoverflow.com/questions/23536893/…
Gustavo Semião-Lobo

219

Mavericks에 해당 버전을 실제로 설치할 수 있습니다.

gem install libv8 -v 3.11.8.17 -- --with-system-v8

rbenv 및 ruby ​​1.9.3p448에서 작동하는지 확인할 수 있습니다.


5
나에게도 동일-os x 10.9, rbenv 및 ruby-2.0.0-p247
roo

1
오래된 프로젝트를 위해 1.8.7에 근무 :)
Juan de Dios H.

3
왜 이것이 작동합니까? 명령으로 --with-system-v8을 수정하는 부분은 무엇이며 어떻게합니까?
David Krider

4
여기 지침에 따라 github.com/cowboyd/libv8 libv8을 사용하면 직접 컴파일하는 대신 기존 버전의 V8 엔진 ( en.wikipedia.org/wiki/V8_(JavaScript_engine) ) 을 사용할 수 있습니다 . C ++ 컴파일러가 변경됨에 따라 매버릭스에서 문제가되는 컴파일입니다. 당신은 자신이 (여기에 지침을 사용하여 libV8을 컴파일 할 수 stackoverflow.com/a/19668162/2012130 )
올리버 쇼

5
- rbenv 루비 2.1.1와 작품gem install libv8 -- --with-system-v8
앤드류

35

나를위한 엘 캐피 탄 솔루션 :

$ brew install v8
$ gem install libv8 -v REQUIRED_LIBV8_VERSION -- --with-system-v8

REQUIRED_LIBV8_VERSION내가 어디에 3.16.14.7있었지만 번들에 필요한 것이 무엇인지 확인해야합니다 (레일에 대한 것이 었습니다 4.2.5)

gem과 시스템 라이브러리가 전역 인 경우 수퍼 유저 권한으로 위의 명령을 실행해야 할 수도 있습니다.


4
brew install 또는 gem install에 sudo를 사용해서는 안됩니다. 권한 문제가 발생합니다.
bendangelo

2
@benDangelo, 당신이 말하는 것은 절대적으로 정확합니다. 시스템에 소프트웨어를 설치하기 위해 루트 권한이 필요할 수 있지만 sudo를 일반적으로 사용하는 것은 좋지 않습니다. 답변을 편집하겠습니다. 감사합니다.
Evgenia Manolova

그것은 나를 위해 작동합니다! 감사합니다. 이것이 유일한 해결책이었습니다.
Charles Hamel

14

허용 된 답변을 시도했을 때 libv8은와 함께 성공적으로 설치 gem install libv8되지만 bundle installlibv8에서는 실패합니다. bundle install다른 버전의 libv8을 설치하려고 한다고 생각합니다 . 나는 나를 위해 일한 해결책을 찾을 수있었습니다.

Rubyracer가 의존하기 때문에 libv8이 필요했습니다. 그것을 설치하기 위해, gem_make.outRubyracer 의 로그에 설치에 실패한 버전을 기록했습니다. ( gem_make.out로그 경로 는 실패 메시지에 있습니다.) 제 경우에는 3.16.14.7이었습니다. (이 버전은 지금부터 3 년 동안 읽고있는 경우를 대비하여 시간이 지남에 따라 변경 될 수 있습니다.) 그런 다음이 작업을 수행했습니다.

gem install libv8 -v 3.16.14.7 -- --with-v8-lib <-허용 된 답변과 다른 플래그를 적어 둡니다.

이것이 작동하게했습니다 :

gem install therubyracer

내가 내 완료 할 수 bundle install있습니다.

이것은 OSX Yosemite에서 나를 위해 일했습니다.


OSX Yosemite로 업그레이드 한 직후 번들 설치가 중단되어이 솔루션을 찾아야했습니다.
Steven Hirlston

이것은 OS X Yosemite에서 훌륭하게 작동하지만 다른 많은 대답은 단순히 작동하지 않습니다.
Roy Li

고마워 친구 'therubyracer'가 마침내 설치되었습니다.
Kiryl Plyashkevich

8

https://github.com/cowboyd/therubyracer/issues/339

해당 링크에서 찾은 jasonlynes의 솔루션이 나를 속였습니다. 다른 것이 작동하지 않았습니다.

brew install homebrew/versions/v8-315
brew link --overwrite v8-315 --force
gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -v '0.12.2' -- --with-system-v8

1
왜 이것이 2020 년에도 여전히 문제가되는지 믿을 수 없습니다 ... 감사합니다 @ Stefanos.Ioannou 이것이 저에게 효과적이었습니다.
아브라함 밀라노

6

각 버전을 알 필요없이 번 들러를 구성 할 수 있습니다. @ 3.15는 다른 버전으로 대체 될 수 있습니다.

$ 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

1
macOS Catalina에서 작동합니다. 감사합니다!
Aleksandr K.

4

macOS Catalina @ 10.15 및로 업데이트했습니다 ruby 2.6.5. 가지고있는 동안은 후 libv8therubyracer나는 아직 업데이트 맥 OS에하지 않는 것이 좋습니다 것입니다 있지만, 다시 설치 (I이 들어 ruby괜찮을 것).

먼저 XCode를 업데이트해야했습니다.

  1. xcode-select --install

예전 rbenv에는 업데이트 ruby하고 ruby버전을 수동으로 설정 /Users/<username>/.rbenv/version했습니다 2.6.5. 프로젝트에 .ruby-version파일이 포함되어 있는지는 중요하지 않습니다 .

그리고 나는 이리저리 설치된 버전을 청소 libv8(일반적으로 /usr/local/opt/) brew uninstall v8,brew uninstall libv8@3.15

  1. brew install v8@3.15

이제 https://github.com/cowboyd/libv8#do-i-get-a-binary 다음에 설치했습니다.

  1. gem install libv8 -v '3.16.14.19' -- --with-system-v8

그런 다음 bundle install오류없이 실행될 수 있습니다.


4

내 문제는 이후 및로 therubyracer업데이트 할 때입니다.macOS 10.15ruby-2.6.5

그리고 다음은 저에게 효과적입니다.

brew install v8@3.15

gem install libv8 -v 3.16.14.19 -- --with-system-v8

gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8@3.15


1

OSX Mountain Lion에서 OSX Mavericks로 업그레이드 할 때도 이와 동일한 문제가 발생했습니다. 수락 된 답변은 libv8에서 작동했지만 루비 라커 보석을 번들로 설치했을 때는 그렇지 않았습니다.

ruby-1.8.7-p354에서 ruby-1.8.7-375로 업그레이드하면 속임수가되었습니다. libv8 (3.16.14.3-x86_64-darwin-13) 및 therubyracer (0.12.0) gem은 문제없이 설치되었습니다.

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

rbenv versions
  system
  * 1.8.7-p354
  2.0.0-rc2

rbenv uninstall 1.8.7-p354
rbenv install 1.8.7-p375

rbenv versions
  system
  * 1.8.7-p375
  2.0.0-rc2

bundle install

1

이것은 나를 위해 잘 작동했습니다 :

사전 컴파일 된 gem을 설치하십시오 :

https://dl.dropboxusercontent.com/u/7919548/gems/libv8/libv8-3.11.8.17-x86_64-darwin-13.gem (sha1 : 5ce07aaf4085fff5a5e10fe018fd6b22021bef3b)

또는 자신만의 것을 선호하는 경우 :

  git clone https://github.com/cowboyd/libv8.git
  cd libv8
  git checkout 3.11
  bundle install
  bundle exec rake clean build binary
  gem install pkg/libv8-3.11.8.17-x86_64-darwin-13.gem

출처 : https://github.com/cowboyd/libv8/issues/107

수정을위한 Felix Bünemann 에게 감사합니다 !


1

이전 답변에 요약 된 여러 가지 솔루션을 시도했지만 번들을 실행하면 (다른 보석을 설치하기 위해) libv8을 다시 컴파일하려고 시도하고 (이미 성공적으로 설치했지만 --with-system-v8) 동일한 문제가 발생합니다.

결국, libv8 gem을 제거하고 rubygems에서 gem 파일을 가져 와서 플래그로 .gem파일 을 수동으로 설치하는 것이 --with-system-v8나에게 효과적이라는 것을 알았 습니다.

gem uninstall libv8
gem fetch libv8 -v LIBV8_VERSION
gem install libv8-LIBV_VERSION.gem -- --with-system-v8
bundle

올바른 길로 나를 안내해Gaurav Agarwal의 답변 에 감사드립니다 !


1

이 중 어느 것도 도움이되지 않았습니다 ... 내가 무엇을했는지에 상관없이 루비 레이서의 보석 설치는이 오류로 계속 불평했습니다.

Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Beginning compilation. This will take some time.
Building v8 with env CXX=clang++ LINK=clang++  /usr/local/bin/gmake x64.release ARFLAGS.target=crs werror=no
GYP_GENERATORS=make \
build/gyp/gyp --generator-output="out" build/all.gyp \
              -Ibuild/standalone.gypi --depth=. \
              -Dv8_target_arch=x64 \
              -S.x64 -Dmac_deployment_target=10.15 -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3 -Dwerror=''
  File "build/gyp/gyp", line 12
    except ImportError, e:
                      ^
SyntaxError: invalid syntax
gmake: *** [Makefile:268: out/Makefile.x64] Error 1

궁극적으로 저에게 도움이 된 것은 https://www.bountysource.com/issues/82833405-libv8-fails-to-build-on-catalina-10-15 에서 우연히 만난이 다른 포럼이었습니다.

나를 위해 일한 최종 솔루션 :

이 줄을 .zshrc 파일에 추가해야했습니다.

export CXX=clang++
export GYPFLAGS=-Dmac_deployment_target=10.15

그런 다음이 명령을 실행해야했습니다.

source ~/.zshrc
brew tap homebrew/homebrew-core
brew install v8@3.15
gem uninstall therubyracer
gem uninstall libv8
gem install libv8 -v '3.16.14.19' -- --with-system-v8
gem install therubyracer -v '0.12.3' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

다른 사람이 유용하다고 생각합니다!



0

RVM 환경 및 ruby-2.1.1 버전의 MAC-Yosemite에서

gem install libv8 -v 3.16.14.3 -- --with-v8-lib gem install therubyracer

위의 명령을 사용하여 작동하며이를 확인할 수 있습니다.


0

실제로 나를 위해 일한 것은 루비를 2.2.0으로 업그레이드하여 Gemfile.lock을 제거하고 다시 번들링하는 것이 었습니다.

매력처럼 일했다!


0

이것이 나를 위해 일한 것입니다.

3.16.14.7버전으로 교체 하십시오.

bundle install
gem install libv8 -v '3.16.14.7' -- --with-system-v8

bundle install
gem uninstall libv8 -v '3.16.14.7' -- --with-system-v8

brew install homebrew/dupes/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

bundle install

이것은 오래된 gcc를 강제로 사용하며 기껏해야 반창고 일 것입니다.
Jim Wrubel

0

El Cap에서도 비슷한 문제에 직면했습니다. 여기 내가 한 일이 있습니다.

brew tap homebrew/dupes
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 install libv8 -v 3.11.8.17 -- --with-system-v8

0

다른 프로젝트에 Xcode 베타 버전을 사용하고 있었고 잊어 버렸습니다. 로 다시 전환하십시오 xcode-select. 다음과 같은 것 :

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

-6

Gemfile에서 제거하십시오.

보석 'therubyracer', : platforms => : ruby


2
이런 종류의 게시물은이 게시물의 전체 목적을 무효화합니다.
Dan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.