Як встановити therubyracer gem на 10.10 Yosemite?


97

Мені не вдається встановити самоцвіт therubyracer на Йосеміті 10.10.

Ось журнал:

11:53 $ gem встановити libv8 -v '3.16.14.3' - --with-system-v8


Створення власних розширень за допомогою: '--with-system-v8'
Це може зайняти деякий час ...
Успішно встановлено libv8-3.16.14.3
Розбір документації для libv8-3.16.14.3
Встановлення документації ri для libv8-3.16.14.3
Завершено встановлення документації для libv8 через 0 секунд
Встановлено 1 самоцвіт


02:05 $ gem встановити therubyracer -v '0.12.1' - --with-system-v8


Створення власних розширень за допомогою: '--with-system-v8'
Це може зайняти деякий час ...
ПОМИЛКА: Помилка встановлення rubyracer:
    ПОМИЛКА: Не вдалося створити власне розширення gem.

    /usr/local/var/rbenv/versions/2.1.2/bin/ruby extconf.rb --with-system-v8
перевірка на main () у -lpthread ... так
перевірка на main () у -lobjc ... так
перевірка на v8.h ... ні
*** extconf.rb не вдалося ***
Не вдалося створити Makefile з якоїсь причини, можливо, через відсутність необхідного
бібліотеки та / або заголовки. Перегляньте файл mkmf.log, щоб отримати докладнішу інформацію. Ви можете
потрібні параметри конфігурації.

Надані параметри конфігурації:
    --with-opt-dir
    - без-opt-dir
    --with-opt-include
    --without-opt-include = $ {opt-dir} / включити
    --with-opt-lib
    --without-opt-lib = $ {opt-dir} / lib
    --with-make-prog
    - без make-prog
    --srcdir =.
    --курдир
    --ruby = / usr / local / var / rbenv / версії / 2.1.2 / bin / ruby
    --with-pthreadlib
    - без-pthreadlib
    --with-objclib
    - без-objclib
    --enable-налагодження
    --disable-налагодження
    --with-v8-реж
    --без-v8-реж
    --with-v8-include
    --without-v8-include = $ {v8-dir} / включити
    --with-v8-lib
    --without-v8-lib = $ {v8-dir} / lib
/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in `configure ': у вас є обраний для використання версії V8, знайденої у вашій системі (Libv8 :: Location :: System :: NotFoundError)
а * не * той, що входить до комплекту з rubygem libv8. Однак,
його не вдалося знайти. будь ласка, переконайтесь, що у вас є версія
v8, сумісний із встановленою версією 3.16.14.3. Ви можете
потрібні спеціальні параметри --with-v8-dir, якщо це нестандартно
Розташування

Дякую,
Mgmt

    з /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile '
    з extconf.rb: 32: в ``

extconf не вдалося, код виходу 1

Файли самоцвітів залишаться встановленими в /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/therubyracer-0.12.1 для перевірки.
Результати реєструються в /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-14/2.1.0-static/therubyracer-0.12.1/gem_make. назовні

Ви теж
стикаєтесь

Я знаю, мені подобається бути авантюристом :-P
Ніколас Бланко

1
У мене також виникають проблеми з цим, я теж спробував
запустити

@sandelius перевірити мою відповідь
mmln

Відповіді:


68
git clone https://github.com/cowboyd/libv8.git
cd libv8
bundle install
bundle exec rake clean build binary
gem install pkg/libv8-3.16.14.3-x86_64-darwin-12.gem #note that libv8 version may change, so tab through files in pkg/, also remember to use the one with version specified

то просто зв’яжіть дорогоцінні камені проекту

це єдиний спосіб, як це спрацювало для мене 10.10 (ruby 2.1.2)


2
дякую, але це libv8, я говорив про самоцвіт therubyracer.
Ніколас Бланко

2
це те, що вам потрібно, щоб уникнути проблем з therubyracer
mmln

2
Мені байдуже, якщо я порушую правила. Я не можу вам подякувати. Ви врятували для мене величезний термін виконання проекту.
AKWF

1
Дякую, це працює для мене, просто для такого копіюючого / вставного хлопця, як я, ми зараз знаходимось у gem install pkg / libv8-3.16.14.7-x86_64-darwin-14.gem
Christophe Dufour

2
Варто також згадати, що якщо ви використовуєте Gemfile і все ще маєте проблеми з встановленням rubyracer, це, мабуть, тому, що існує інша версія libv8, яка вже була додана до Gemfile.lock. Просто додайте gem 'libv8', '3.16.14.3'(або будь-яку точну версію libv8, яку ви щойно встановили вручну), і запустіть пакетне оновлення libv8. Потім слід встановити therubyracer.
Джон Кернс

257
gem uninstall libv8
brew install v8
gem install therubyracer
gem install libv8 -v '3.16.14.3' -- --with-system-v8

це єдиний спосіб, як це спрацювало для мене 10.10 (ruby 2.1.2)

Або спробуйте gem install libv8 -v 'XX.XX.XX' -- --with-system-v8додати версію самоцвіту :)

ОНОВЛЕННЯ для Mac OS Catalina:

brew tap homebrew/versions
brew install v8@3.15
brew link --force v8@3.15
gem install libv8 -v 'XX.XX.XX' -- --with-system-v8
gem install therubyracer

3
Так, це той, хто допомагає без будь-яких дивацтв. Хоча ви можете просто отримати помилку libv8, зробіть це! Дякую.
pjammer

2
Так. Це правильний спосіб зробити це. Особливо, якщо ви перебудували свій рубін за допомогою найновіших інструментів командного рядка 10.10.
Pankaj Tyagi

3
Працював у мене з Ruby 2.1.3 в OS X Yosemite.
Sarah Vessels

4
На додаток до цього, якщо ви використовуєте пакет і маєте Gemfile, можливо, вам доведеться налаштувати його до останньої версії, яку ви щойно встановили. Наприклад, мені довелося (на OS X Yosemite) зробити наступне: gem 'therubyracer', '0.12.1'(додано версію). Потім видалив Gemfile.lock і зробив bundle install. Це чудово працює.
paneer_tikka

2
Це спрацювало і на мене на Ель-Капітані. Я думаю, що це набагато простіше, і це має бути прийнятою відповіддю.
rcd

42

Цього разу для мене не працює жодна з відповідей. Я теж використовую це:

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

Побачено у випусках rubyracer Github.

Сподіваюся, це допомагає комусь іншому.


Дякую за це Жоден з інших підходів не працюватиме на El Capitan із використанням сучасних версій залежних самоцвітів. (therubyracer на даний момент жахливо відстає від libv8.)
Метт Мітчелл,

На жаль, ти маєш рацію ... Ця помилка зводить мене з розуму щоразу, коли я зміню рубінову версію.
кодування залежним

1
tap homebrew / версії зараз застаріли, тому це більше не працює.
mattp

1
Насправді, це gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)працює краще для мене. Директива в моєму Mac насправді/usr/local/opt/v8@3.15
Junji Zhi

@JunjiZhi, брат, твоє рішення спрацювало на мене
shubham mishra

26

Можливо, це буде корисно для когось, але у мене виникли проблеми з встановленням rubyracer (через проблеми з libv8) рішенням було видалити весь libv8, який я встановив. Встановіть rubyracer

$ gem uninstall libv8
$ gem install therubyracer -v '0.12.0'
Fetching: libv8-3.16.14.7-x86_64-darwin-14.gem ( 57%)
Fetching: libv8-3.16.14.7-x86_64-darwin-14.gem (100%)
Successfully installed libv8-3.16.14.7-x86_64-darwin-14
Building native extensions.  This could take a while...
Successfully installed therubyracer-0.12.0
2 gems installed

Сподіваюся, це комусь допомагає.


Здається, це спрацювало для мене. Однак я хотів би відзначити, що кращий спосіб , щоб видалити всі версії libv8 дорогоцінний камінь: gem uninstall libv8 -a -x. Якщо ви використовуєте менеджер версій ruby ​​(наприклад rbenv, тощо), це працює лише для вашої поточної версії ruby ​​(у випадку, якщо це не було очевидно).
xentek

Solution це рішення спрацювало для мене - El Capitan 10.11.6, Ruby - ruby ​​1.9.3p448 (редакція 27.06.2013 41675)
sameera207

13

Здається, це виправлено вище за течією. Що працювало для мене та @aurels та @Mike Causer та @Juanda:

bundle update libv8

7

Це дуже добре спрацювало для мене на моїх Yosemite і Ruby 2.1.5 (Ruby через RVM)

gem install libv8 -v '3.16.14.3' -- --with-system-v8

Раніше мені Gem::Ext::BuildError: ERROR: Failed to build gem native extension.видавали помилку для gem libv8 версії 3.16.14.3


7

Тільки це працює для мене в моєму Yosemite, Ruby 2.1.2:

gem install libv8 -v '3.16.14.3' -- --with-system-v8
brew link --overwrite v8-315 --force
gem install therubyracer -v '0.12.2' -- --with-system-v8

Тільки це вирішило проблему встановлення rubyracer для ruby 1.9.3p484іrubyracer 0.12.3
Михайла Клішевича

6

Я зміг продовжити з рубіновим гонщиком після rm Gemfile.lock

заздалегідь: я встановив v8 через brew install v8, а потім зробивgem install libv8 -v '3.16.14.3' -- --with-system-v8

і я працюю 10.10 Йосеміті


4

Вони виправили це питання в останній версії libv8. Див .: https://github.com/cowboyd/libv8/issues/123

Вам слід встановити з репозиторію github, у рейках я додав рядок до свого gemfile, як це gem "libv8", git: "git://github.com/cowboyd/libv8.git", submodules: true

Редагувати:

Це, мабуть, лише вирішує деякі проблеми. Я встановив нову версію libv8, але зараз rubyracer все ще шукає іншу, думаю? Все ще розглядаю це.


3

У мене була така ж проблема з Йосеміті. Моє рішення подібне до наведеного вище.

Використовуйте gem uninstall libv8для видалення всього, що може бути встановлено.

Залиште therubyracer у своєму Gemfile, але видаліть будь-яке явне посилання на libv8.

Біжи bundle install.

Потім libv8 встановив нормально як залежність.


Це було моє питання. У мене було кілька версій libv8, які билися між собою. Видалити їх і дозволити пакувальнику вирішити залежність було правильною справою.
DavidMann10k

2

Оновлена ​​відповідь на 2018 рік.

Я на High Sierra, на Homebrew 1.6.1

brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8@3.15/

Це те, що мені вдалося.

За його оригінальну відповідь заслуговує @ coding-addicted .


1

Після годин спроб простого оновлення ruby ​​працювали:

brew install ruby 

а потім додайте наступне у файл gem:

gem 'libv8'  
gem 'therubyracer' 

1

Звертаюся до всіх, у кого могла виникнути моя проблема: я в підсумку видалив свою рубінову версію в RVM, а потім перевстановив її. Здавалося, це використовувало правильні залежності в останній версії інструментів xcode для компіляції ruby.

rvm list
rvm uninstall ruby-x.x.x
rvm install ruby-x.x.x

0

Я зробив наступне

gem install therubyracer

який зараз встановлює therubyracer 0.12.1який встановлює залежність, libv8 (3.16.14.7 x86_64-darwin-14)яка встановлена ​​без помилок.

Я зробив це з використанням, ruby 2.1.5яке встановив за допомогою:

CC=/usr/bin/gcc rbenv install 2.1.5

що я зробив після бігу brew upgrade ruby-builds.

Після установки ruby 2.1.5я також побіг

gem upgrade --system

отримати rubygems-update 2.4.5


0

це трапляється через деякі конфлікти з libv8, хоча ви можете просто призначити версію rubyracer, і вона буде встановлена:

змінити наступне у gemfile:

самоцвіт 'therubyracer', '~> 0.12.1'

і виконайте встановлення пакета



0

Це рішення спрацювало для мене після рішення Якуба Трошка вище, лише з незначними змінами

gem uninstall libv8
gem install therubyracer -v '0.12.1'
    Fetching: libv8-3.16.14.19-x86_64-darwin-18.gem (100%)
    Successfully installed libv8-3.16.14.19-x86_64-darwin-18
    Building native extensions.  This could take a while...
    Successfully installed therubyracer-0.12.1
    Parsing documentation for libv8-3.16.14.19-x86_64-darwin-18
    Installing ri documentation for libv8-3.16.14.19-x86_64-darwin-18
    Parsing documentation for therubyracer-0.12.1
    Installing ri documentation for therubyracer-0.12.1
    Done installing documentation for libv8, therubyracer after 0 seconds
    2 gems installed
gem install libv8 -v '3.16.14.17' -- --with-system-v8  (if the libv8 version required for your project is different from the one installed by rubyracer)
bundle install

Будь ласка, вкажіть незначну зміну та спробуйте пояснити, чому вона працює. Оскільки ви відповідаєте на 4-річне запитання, вам також слід додати детальну інформацію про відповідні версії (тоді ваша відповідь могла бути не актуальною).
Міхал

0

Використання каталогу homebrew v8 для --with-v8-dir=/usr/local/Cellar/v8@3.15/3.15.11.18_1, замість /usr/local/opt/v8-315, - це те, що мені вдалося, у кодуванні відповіді наркомана.

Це видно в Summaryнастої команди установки, brew install v8-315.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.