OS X 10.9+ üzerine libv8 gem kurulumu


212

Ben libv8 3.16.14.3 yüklemeye çalışıyorum ama son kararlı rvm ve ruby-1.9.3-p125 kullanarak OSX Mavericks bir hata alıyorum.

Bu, 'gem install libv8' komutunu çalıştırmanın çıktısıdır:

~/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

Yanıtlar:


463

Bunun nedeni, OS X 10.9+'nin GCC'nin 4.8 sürümünü kullanmasıdır. Bu, çekme isteğinde belirtildiği gibi libv8'in eski sürümlerinde resmi olarak desteklenmez ( https://github.com/cowboyd/libv8/pull/95 ). Gemfile (ya da) a bundle updateyeterli olması gerekir lütfen libv8 sürümünü çarpmaya çalışın . Bu yardımcı olur umarım.

Libv8 README sitesinden

Kendi V8'inizi getirin

Libv8, therracyracer tarafından kullanılan V8 motorunun arayüzü olduğundan, V8 önceden yüklenmiş olsa bile libv8'i kullanmanız gerekebilir. Sizin için inşa etmek yerine kendi V8 kurulumunuzu kullanmak istiyorsanız, --with-system-v8 seçeneğini kullanın.

RubyGems'i kullanma:

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

Bundler'ı kullanma (Gemfile dosyasında):

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

Kendi V8'inizi çalıştırmak istiyorsanız, hem V8'i hem de başlıklarını yüklemeniz gerektiğini unutmayın (Debian dağıtımları için libv8-dev'de bulunur).

Kendi derleyicinizi getirin

Derlemeden önce CXX ortam değişkenini ayarlayarak veya paket yapılandırmasına --with-cxx = seçeneğini ekleyerek istediğiniz bir derleyiciyi belirtebilirsiniz:

paket yapılandırması build.libv8 --with-cxx = clang ++

Düzenle:

Bu konu getirdiği takdirde therubyracerönerdiği gibi, aşağıdakileri deneyin rider_on_rails burada :

mücevher kaldırma libv8

gem install therubyracer -v YOUR_RUBY_RACER_VERSION

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


Maalesef üzerinde çalıştığım projedeki libv8 sürümünü değiştiremiyorum. Şimdilik OSX 10.8 sürümüne geçeceğim!
tanookiben

35
--with-system-v8FTW!
JPowell

24
Teşekkürler! bundle config build.libv8 --with-system-v8 yardım eder!
Andrey Skuratovsky

7
bundle updatebeni uyuşma ve elma yükseltme-
acıyan

6
Birisi therubyracerbunu çözdükten sonra mücevher ile aşağıdaki sorunu alırsa : stackoverflow.com/questions/23536893/…
Gustavo Semião-Lobo

219

Bu sürümü Mavericks'e yükleyebilirsiniz:

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

Bunun rbenv ve ruby ​​ile çalıştığını onaylayabilirim 1.9.3p448


5
Benim için aynı - os x 10.9, rbenv ve ruby-2.0.0-p247
roo

1
Eski bir proje için 1.8.7 üzerinde çalıştı :)
Juan de Dios H.

3
Bu neden işe yarıyor? Komutun hangi kısmı --with-system-v8 değiştiriyor ve ne yapıyor?
David Krider

4
Buradaki talimatlara göre github.com/cowboyd/libv8 libv8, V8 motorunun önceden var olan bir sürümünü ( en.wikipedia.org/wiki/V8_(JavaScript_engine) ) kendiniz derlemek yerine kullanmanıza izin verir . C ++ derleyicileri değiştikçe mavericks'te bir sorun olan derleme. Buradaki talimatları kullanarak libV8'i kendiniz derleyebilirsiniz ( stackoverflow.com/a/19668162/2012130 )
Oliver Shaw

5
rbenv ve ruby ​​ile çalışır 2.1.1 -gem install libv8 -- --with-system-v8
Andrew

35

Benim için El Capitan Çözümü:

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

REQUIRED_LIBV8_VERSIONBenim için neredeydi 3.16.14.7, ama paketinizde ihtiyacınız olanı kontrol etmeniz gerekiyor (bu raylar için olanıydı 4.2.5)

Yukarıdaki komutları üst kullanıcı olarak da çalıştırmanız gerekebilir (mücevherleriniz ve sistem kitaplıklarınız globalse)


4
Demlemek veya gem kurulumu için sudo kullanmamalısınız. Bu izin sorunları oluşturur.
bendangelo

2
@benDangelo, söyledikleriniz kesinlikle doğru. Sistem bazen yazılım yüklemek için kök ayrıcalıkları gerektirse de, sudo'yu genel olarak kullanmak kötü bir uygulamadır. Cevabımı düzenleyeceğim, teşekkürler.
Evgenia Manolova

Benim için çalışıyor! teşekkür ederim. Bu tek çalışan çözümdü.
Charles Hamel

14

Kabul edilen yanıtı denediğimde, libv8 başarıyla yüklenir gem install libv8, ancak bundle installlibv8'de başarısız olur. Bunun bundle installlibv8'in farklı bir sürümünü kurmaya çalıştığını düşünüyorum . Benim için işe yarayan bir çözüm bulabildim.

Libv8'e ihtiyacım vardı çünkü therubyracer buna bağlı. Yüklemek için, gem_make.outgünlük izleyiciye günlükte yüklenemeyen sürümü not ettim. ( gem_make.outGünlüğün yolu hata iletisinde olacaktır.) Benim durumumda 3.16.14.7 idi. (Bu sürüm, muhtemelen üç yıl sonra okuyorsanız muhtemelen zaman içinde değişecektir.) Sonra bunu yaptım:

gem install libv8 -v 3.16.14.7 -- --with-v8-lib <- kabul edilen cevaptan farklı bayrağı not edin

bunun çalışmasına izin veren:

gem install therubyracer

bu da benim tamamlamama izin verdi bundle install.

Bu benim için OSX Yosemite'de çalıştı.


Paket kurulumunun OSX Yosemite'ye yükselttikten hemen sonra benim için kırıldığını belirtmeliyim, bu yüzden bu çözümü bulmak zorundaydım.
Steven Hirlston

Bu, OS X Yosemite'de mükemmel bir şekilde çalışır, ancak diğer birçok cevap işe yaramaz.
Roy Li

Teşekkürler dostum. 'therubyracer' sonunda kuruldu.
Kiryl Plyashkevich

8

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

Jasonlynes'in bu bağlantıdaki çözümü benim için hile yaptı. başka hiçbir şey işe yaramadı.

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
Bunun neden hala 2020'de bir sorun olduğuna inanamıyorum ... Teşekkürler @ Stefanos.Ioannou bu benim için çalışan çözüm.
Abraham Milano

6

Her sürümü bilmek yerine paketleyiciyi yapılandırabilirsiniz. @ 3.15 diğer sürümlerle değiştirilebilir.

$ 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 üzerinde çalışır. Teşekkür ederim!
Aleksandr K.

4

MacOS Catalina @ 10.15 ve ' e güncelledim ruby 2.6.5. Bir süre sonra henüz macOS'u güncellememeyi tavsiye etsem de tekrar kurun libv8ve therubyracerkurun ( rubyiyi olacağını duydum ).

İlk olarak, XCode'u güncellemek zorunda kaldım

  1. xcode-select --install

Kullandığım rbenvgüncellemeye rubyve set rubyelle versiyonunu /Users/<username>/.rbenv/versioniçin 2.6.5. Projenizin bir .ruby-versiondosya içerip içermediği önemli değildir .

Sonra ben fro yüklü herhangi bir sürümü temizledik libv8(genellikle de /usr/local/opt/): brew uninstall v8,brew uninstall libv8@3.15

  1. brew install v8@3.15

Şimdi, https://github.com/cowboyd/libv8#do-i-get-a-binary'yi izledikten sonra yükledim

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

ve sonra bundle installhatasız çalışabilir .


4

Sorunum olduğu için therubyracer, ne zaman güncellenecek macOS 10.15veruby-2.6.5

Ve aşağıdakiler benim için çalışıyor:

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'dan OSX Mavericks'e yükseltme yaptığımda da aynı sorunu yaşadım. Kabul edilen cevap libv8 için çalıştı, ancak therubyracer gem'i paketlemeye gittiğimde değil.

Benim için yakut-1.8.7-p354'ten yakut-1.8.7-375'e geçiş yapmak bana hile yaptı. libv8 (3.16.14.3-x86_64-darwin-13) ve reaubyracer (0.12.0) taşları sorunsuz bir şekilde kuruldu.

rbenv kullandığınızı varsayarsak:

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

Bu benim için iyi çalıştı:

Bu önceden derlenmiş taşı yüklemeyi deneyin:

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

Veya kendinizinkini oluşturmayı tercih ederseniz:

  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

Kaynak: https://github.com/cowboyd/libv8/issues/107

Düzeltme için Felix Bünemann'a teşekkürler !


1

Önceki yanıtlarda özetlenen bir dizi çözümü denedim, ancak çalışan paketin (diğer, eksik mücevherleri yüklemek için) libv8'i yeniden derlemeye çalışacağını (başarıyla kullanarak yüklemesine rağmen --with-system-v8) ve böylece aynı sorundan muzdarip olduğunu gördüm .

Sonunda, libv8 gem kaldırmanın, gem dosyasını rubygems'ten getirmenin ve daha sonra .gemdosyayı el ile yüklemenin --with-system-v8benim için çalıştığını buldum.

yani

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

Gaurav Agarwal'ın beni doğru yola götürme cevabı için teşekkürler !


1

Hiçbiri bana yardımcı oldu ... ne olursa olsun, therubyracer benim mücevher yükleme bu hata ile şikayet etti:

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

Nihayetinde bana yardımcı olan, https://www.bountysource.com/issues/82833405-libv8-fails-to-build-on-catalina-10-15 adresinde tökezlediğim diğer forum oldu.

Benim için işe yarayan nihai çözüm:

Bu satırları .zshrc dosyama eklemek zorunda kaldım:

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

Sonra şu komutları çalıştırmak zorunda kaldım:

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

Umarım başka biri bunu faydalı bulur!



0

RVM ortamı ve ruby-2.1.1 sürümü ile MAC-Yosemite'de

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

Yukarıdaki komut yardımı ile çalışır, bunu onaylayabilirsiniz.


0

Benim için gerçekten işe yarayan, Ruby'yi 2.2.0'a yükseltmek, Gemfile.lock'u kaldırmak ve tekrar paketlemekti.

Bir cazibe gibi çalıştı!


0

Bu benim için işe yaradı.

3.16.14.7sürümünüzle değiştirin .

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

bu, en iyi şekilde bir bant yardımı olacak ve kesinlikle yolda sorunlara neden olacak eski bir gcc'yi zorlar.
Jim Wrubel

0

El Cap'da da benzer bir sorunla karşılaştım. İşte yaptığım şey.

brew tap homebrew/dupes
brew install apple-gcc42

Ve sonra,

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

En sonunda,

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

0

Başka bir proje için Xcode'un beta sürümünü kullanıyordum ve unutmuştum. İle geri dönün xcode-select. Gibi bir şey:

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

-6

Gemfile'dan kaldır:

gem 'therubyracer',: platformlar =>: yakut


2
Bu tür, bu yazının tüm amacını yener.
Dan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.