Osx mavericks üzerinde "gem install therubyracer -v '0.10.2'" yüklenmiyor


91

Therubyracer'ı "gem install therubyracer -v '0.10.2'" kullanarak mavericks'e yüklemeye çalışıyorum ama şu hatayı alıyorum:

/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

Biri bu mücevheri nasıl çalıştıracağımı anlamama yardım edebilir mi? Komut satırı araçlarını kurdum.


Sende var mı homebrewbrew install v8
Gem'i

Brew install v8'in ayrı bir konu olduğuna inanıyorum. Brew with v8 ile ilgili ayrıntılar için lütfen stackoverflow.com/questions/11598655/therubyracer-install-error adresine bakın .
Ash Blue

Yanıtlar:


242

Daha yeni bir therubyracermücevher sürümünü kullanmaya karar verirseniz , artık bu sorunu yaşamayacaksınız.

Aksi takdirde:

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
Bu yaklaşım, sembolik bağları değiştirmekten daha iyi görünüyor
Nilesh

3
brew tap homebrew/dupes"Hata: apple-gcc42 için formül yok" düzeltmeleri
TomFuertes

1
Bu SONUNDA sorunu benim için çözdü - teşekkürler! Aşağıda M. Scott Ford'un symlink çözümünü denedim ve işe yaradı , ancak gerçekten bir şey yapmaya çalıştığımda (tırmık, raylar vb.) Bir hata attım.
Kyle Fox

2
Therubyracer 0.12.0'a güncelleme yapmak bu sorunu benim için düzeltti.
jackocnr

6
Ne yazık ki, bu çözümlerden hiçbiri benim için OSX 10.9, ruby ​​2.1.0 ve ekleyici 0.12.1 üzerinde çalışmıyor.
turboladen

16

Sonunda Simon ve Alvaro sayesinde biraz uğraştıktan sonra çalıştırdım.

Yine de eklemem gereken bir şey var, --with-system-v8 bayrağını kullanmak benim için işe yaramadı ... Bu yüzden v8 sistemimi kaldırdım

brew uninstall v8

Ve koşmak

gem install libv8

Zaten gem install libv8sistem v8 bayrağını çalıştırdıysanız , bu gem sürümünü kaldırdığınızdan emin olun (gem uninstall libv8 ). Önemli olan şey, brew tarafından sağlananı kullanmamanız, Mavericks'te çalışmıyor gibi görünmesidir (iyi kurulur ve paketleyici, paketinizin tamamlandığını bildirir, ancak uygulamanız v8'i kullanmaya çalıştığında başarısız olur. ).

Cevabı özetlemek gerekirse, aşağıdakileri yapmak benim için çalıştı:

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
Bu benim için çalıştı. Ama gcc'yi / usr / local / bin içine sembolik bağladım ve libv8'i yükledikten sonra onu kaldırabilmek için terminali yeniden başlattım.
Jamon Holmgren

2
Homebrew ikili dosyalarını bu belirli sürümle / usr / bin içine eşleştirmek gerçekten kötü bir fikirdir. Bir sonraki brew updategelir ve devir alırsa, bu yollar sizi bozuk bir durumda bırakacaktır.
mrm

10

Aynı sorunu yaşadım, bu benim için çalışıyor:

therubyracer (0.10.2) ve libv8 (3.3.10.4)

Her şeyden önce:

  • brew install apple-gcc42
  • Eğer (derleyicilerinin tüm ikili dosyaları bağlamalıdır gcc, cpp, g++için)/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

Daha sonra şunu deneyebilirsiniz:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer'veya bundle installrails projesinin dizinine.

apple-gcc42: This formula either does not compile or function as expected on macOS MacOS'um 10.12.6
Wylliam Judd

7

Ben de aynı sorun vardı ve bir çözümdür anda kullanmak elma gcc42 yerine clang hem taşlar derlemek için:

brew install apple-gcc42

Ve sonra {gcc, g ++, c ++} ikili dosyaları için / usr / bin içinde bazı sembolik bağlar yapmak arasında seçim yapabilirsiniz:

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

Aslında g ++ yeterli olmalıdır.

Veya ... homebrew tarafından oluşturulan ikili dosyalara karşılık gelen yollarla CC / CXX / CPP ortam değişkenlerini dışa aktarabilirsiniz. Bu kesinlikle daha temiz bir çözüm.

Üçüncü bir çözüm, Xcode 4.6.3'ü indirip Uygulamalar klasörüne yüklemektir . Ardından terminale girin:

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

Gem yüklendikten sonra Xcode 5.0'a geri dönebilirsiniz:

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

Derleyiciyi apple-gcc42'ye nasıl geçiririm?
user2711889

@Simon, derleyicilere symlinc yapmaya çalıştığımda dosyanın var olduğuna dair bir mesaj alıyorum. Bu clang dosyası mı? Paket yüklemesini çalıştırırsam, hata clang referanslarıyla dolu olduğundan gcc kullanıyormuş gibi görünmüyor.
isea

MacPorts kullanıyorsanız, farklı bir GCC sürümüne işaret etmek için sembolik bağlantı kurmanıza gerek yoktur, bunun için yerleşik bir komut vardır (cevabıma bakın).
jshkol

6

Apple-gcc42'yi yüklemeden çalışan bir geçici çözüm buldum.

Aldığınız hata mesajı aşağıdaki gibi görünüyorsa bu işe yarayacaktır:

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'

O zaman aşağıdakileri yapabilmelisiniz:

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

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


Bunun için büyük +1. Mücevher CLI'ye yüklenecekti, ancak RubyMine v6 onu yüklemeyi reddediyordu ... bu sembolik bağın ayarlanması sorunu nihayet çözdü. Teşekkürler!
Ode

1
Bu% 1000, @ M.ScottFord. Rvm kullanıyorum ve bu nedenle ln ifadem şuydu: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

Pek çok yanıtta önerildiği gibi, yapılacak en kolay şey, Ruby Racer yerel uzantılarını Apple GCC 4.2 ile (Xcode ile kurulan sürüm yerine) derlemektir.

MacPorts kullanıyorsanız, GCC ikili dosyaları için sembolik bağlantılar kurmakla manuel olarak uğraşmanız gerekmez. port selectKomut sizin için yapar. Mavericks'i yükledikten sonra MacPorts'u güncellemediyseniz, bir sudo port selfupdate. Güncel MacPorts ile aşağıdakileri deneyin:

# 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

Genel olarak bu prosedür ( sudo port select gcc [version]), Xcode tarafından yüklenen yerine belirli bir GCC sürümünü kullanmak istediğinizde (10.9 Mavericks / Xcode 5 için Apple LLVM v5) çalışacaktır.


1
Benim için mavericks üzerinde çalıştı.
Evo_x

3

Ruby 2.0.0p353 ve OS x 10.9'da therubyracer 0.12 ve libv8 3.16.14.3'ü kurmayı başardım

libv8, gcc42 gerektirir

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 daha sonra gcc gerektirir

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

bundleyerine kullangem install therubyracer


Teşekkürler! Bu bundle install, deneme yanılma günlerinden sonra nihayet beni geçmişte bıraktı. Farklı bir şekilde yaptığım tek şey , Apple LLVM sürümü olduğu ve Xcode ile yapılandırıldığı bildirilene brewkadar yüklenen tüm geliştirici araçlarını kaldırmaktı gcc --version, ardından /usr/bin/gccapple-gcc42'yi simgelemeden önce var olanı (ve diğerleri) dışarı taşıdım. libs, sonra gcc49'u yüklemek yerine (en son denediğimde yapılandırmamızı devraldı) orijinal gcc, g ++ ve cpp kitaplıklarını geri kopyaladım. Benim için işe yarayan yolu bulmak için 3 düzine farklı yol denediğime göre, YMMV
Chris Bloom

3

Bu, sorun yaşayan herkes için yardımcı yazılım yüklemenin hatasız ve temiz bir yolu (sembolik bağ yok) olmalıdır.

Alınan kaynak: gem install therubyracer -v 0.11.4 OS X 10.10'da başarısız oluyor

Xcode yükleyin (bu sürümlerden birine sahip değilseniz) 6.1.1, 6.2-beta veya 6.3-beta ve (bu gereklidir) 4.6.3

gem uninstall libv8 zaten yapmadıysan

Xcode 4.6.3'e geç

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

gem install libv8 -v '3.11.8.17' Veya hangisinin therubyracer sürümünüze bağlıysa

Xcode 6.1.1, 6.2-beta veya 6.3-beta'ya geçin (veya mevcut Xcode yüklemenizi denemek istiyorsanız, bu satırı ayarlayın, bu çalışmaların 3'ünü de onayladım)

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

gem install therubyracer -v '0.11.4' veya yüklemeye çalıştığınız sürüm.


1
Teşekkürler @ th01 bu benim için çalıştı ... Bulabildiğim her şeyi 3 saat boyunca denedim ... benim durumumda, libv8 mücevheriydi. Xcode4.6.3'ü indirip bu sürümle çalıştırdı ve başarıyla kuruldu. Birden fazla Xcode sürümünün nasıl kurulacağına dair hızlı bir öğretici içeren bir bağlantı: blogs.oracle.com/mobile/entry/how_to_install_multiple_xcodes
miligraf

Xcode 4.6.3'ü indirip çalıştırıp sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developerçalıştırdığımda şunu gem install libv8 -v '3.3.10.4'alıyorum: unable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly! Neyi yanlış yapıyorum?
Wylliam Judd

1

Libv8 ile çalışmasını sağlamak için therubyracer 0.12.0'ı kurmaya çalışırken neredeyse aynı hatayla karşılaştım. Bu benim için çalıştı:

$ 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'dan OSX Mavericks'e yükselttiğimde de aynı sorunu yaşadım.

Ruby-1.8.7-p354'ten Ruby-1.8.7-375'e yükseltme yapmak benim için hile yaptı.

Belki Ruby 1.9.3-p194'ten rc1'e yükseltmeyi deneyin (1.9.3 şu anda p484'ün üzerindedir)

rbenv kullandığınızı varsayarsak:

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

0

Mavericks'ten Yosemite'ye yükselttikten sonra bu sorunu yaşadım. Sorun, Ruby sürümümü OSX'in eski sürümüyle derlememdi.

Koşarsam

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

Yosemite x86_64-darwin-13yerine ben x86_64-darwin-14alırdım.

Ruby I'yi yeniden yüklemek için

  1. Tamamen kaldırılmış eski sürüm: rvm remove ruby-2.1.1
  2. Kaynaktan yeniden yüklendi (--disable-binary önceden derlenmiş ikili dosyaları kullanmaz ve bir yapıya zorlar): rvm reinstall --disable-binary 2.1

Sonra bundle installyukarıdaki tüm çözümleri denedikten sonra hatasız çalışabildim .


-2

Yaptığım şey osx mavericks'ti:

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

Sonra:

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

Bu prosedür libv8'in ikili sürümünü indirdi ve kurdu.

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.