उपचारात्मक - मणि :: एक्सट्रीम: बिल्डयूरर: एरोर: मणि देशी विस्तार बनाने में विफल


82

मैं Mavericks पर निम्नलिखित मणि संस्करण स्थापित करने का प्रयास कर रहा हूं

  • libv8 (3.16.14.3)
  • उपचारात्मक (0.12.1)

स्पष्ट रूप से चिकित्सीय रत्न libv8 पर निर्भर करता है।

1) स्थापित करना libv8

Libv8 क्या है? मेरे शोध में थोड़ा सा लगता है कि यह Google Chrome द्वारा उपयोग की जाने वाली किसी प्रकार की जावास्क्रिप्ट लाइब्रेरी है?

मुझे इसे स्थापित करने में समस्या हो रही थी, लेकिन इस महान पोस्ट में मेरी त्रुटि और इसे बाईपास करने के तरीके के बारे में एक सुस्पष्ट उत्तर था।

इसलिए मैंने libv8साथ स्थापित किया

gem install libv8 -- --with-system-v8

यह मेरी समझ है कि यह मणि स्थापित करता है, लेकिन v8 लाइब्रेरी के मेरे स्थानीय सिस्टम इंस्टॉलेशन का उपयोग करता है ... वह संस्करण जो मणि के साथ आता है? किसी भी तरह, यह सफल रहा।

2) थेरैबरिसर स्थापित करना

अगले चरण के दौरान, मुझे therubyracerमणि स्थापित करने में परेशानी हुई । मुझे यकीन नहीं है कि यह मणि क्या करता है, बस यह कि मैं जिस रेल परियोजना की कोशिश कर रहा हूं, उसकी निर्भरता है bundle install

यह मुझे निम्नलिखित त्रुटि देता है:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --without-objclib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include=${v8-dir}/include
    --with-v8-lib
    --without-v8-lib=${v8-dir}/lib
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in 
'configure': You have chosen to use the version of V8 found 
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location

thanks,
The Mgmt

    from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
    from extconf.rb:32:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out

जो मैं इकट्ठा कर सकता हूं, मैंने libv8अपने स्थानीय V8 पुस्तकालय का उपयोग करने के बजाय जो प्रदान किया गया था , उसे स्थापित करने के लिए चुना libv8, लेकिन अब वह स्थानीय स्थापना स्थित नहीं हो सकती है।

  • अगर मैं वास्तव में V8 स्थापित करता हूं और इसे कैसे पता लगाऊं तो मैं कैसे जांचूं?
  • मैंने कुछ निर्दिष्ट झंडे की कोशिश की, उनमें से कोई भी सही स्थापना निर्देशिका के लिए मणि को इंगित नहीं करता था
  • यह एक अलग विषय हो सकता है, लेकिन क्या है extconf.rb? मैंने इसे कुछ जगहों पर देखा है। और यह gccविशिष्ट में संकलक के साथ क्या करने की कोशिश कर रहा है ?

धन्यवाद!!

संपादित करें:

  1. मैंने libv8 की स्थापना रद्द करने और फिर से इंस्टॉल करने के इस समाधान की कोशिश की brew install। यह कुछ इसी तरह के सवालों के एक जोड़े में उल्लेख किया गया था। कोई भाग्य नहीं।

  2. जैसा कि मैंने यहाँ बताया गया है , और पर्यावरण चर का भी मैंने प्रयास किया CC, हालाँकि मुझे नहीं लगता कि इसका कोई प्रभाव है क्योंकि यह पहले से ही मेरे कंपाइलर को उठा रहा था ।CXXCPPgcc v4.6


इस इस , हो सकता है?
DAX

2
<sigh> मुझे हमेशा मैक पर थैरेबीरर स्थापित करने में परेशानी हुई है
मैकरिक्स

जवाबों:


167

इस कदम ने मेरे लिए काम किया।

ओएस: मवरिक रूबी: 2.1.1

gem uninstall libv8
gem install therubyracer -v '0.11.3'
gem install libv8 -v '3.11.8.13' -- --with-system-v8

एक परिवर्तन के साथ, इस उत्तर को स्वीकार करना। मैंने इसे काम करने के लिए चरण 3 और 2 को स्विच किया - libv8 स्थापित करें और फिर थेरेपी रेसर स्थापित करें। धन्यवाद!
user2490003

धन्यवाद, यह एक आकर्षण की तरह काम किया! मैं थक गया होगा, लेकिन यह उपयोगी होगा यदि आपके निर्देशों में आपके संस्करण संख्याओं के बजाय शार्प थे, तो मुझे विभिन्न संस्करणों को स्थापित करने की आवश्यकता थी, लेकिन मैं बस आपके नोट्स की प्रतिलिपि बनाता हूं।
तयशुदा वेब साइट्स

ध्यान दें कि libv8 संस्करण महत्वपूर्ण है, जैसा कि यहां बताया गया है कि विषम बिंदु रिलीज़ (संस्करण में अंतिम दो अंक) में बाइनरी भी शामिल है।
जिमी चू

स्थापित / स्थापना रद्द / नृत्य Mojave पर मेरे लिए काम किया। मुझे इस पुराने सामान से नफरत है! : D
खाली कर देता है

74

OS X El Capitan में इस समस्या का सामना करने वाले लोगों के लिए, एक थेरैब्रायर इश्यू थ्रेड का यह समाधान आखिरकार मेरे लिए क्या था:

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

मैं पहले भी चला brew install gccथा, लेकिन मुझे यकीन नहीं है कि क्या यह वास्तव में आवश्यक था।


1
अंत में काम करने से पहले मुझे अपना Gemfile.lock हटाना पड़ा। संकेत के लिए Thx।
अबूझ

4
+1, लेकिन भविष्य के पाठकों के लिए, आप gem install libv8 -v 'A.B.C.D'उचित के रूप में चाहते हैं । यह इस लेखन के रूप में 3.16.14.15 है।
डेव लैंड

1
+1, यदि आप थेरैबरस के उपयोग के विशिष्ट संस्करण को स्थापित करना चाहते हैं:gem install therubyracer -v 'x.x.x' -- --with-v8-dir=/usr/local/opt/v8-315
avital

1
बहुत कुछ लगता है जैसे जोटर का जवाब। शायद उसे एक चिल्लाओ बाहर फेंक।
omikes

5
मेरे लिए, v8 dir था:
/usr/local/opt/v8@3.15

26

पहले libv8 मणि को अनइंस्टॉल करने की कोशिश करें, फिर माणिक्य और फिर libv8 स्थापित करें

gem uninstall libv8
gem install therubyracer
gem install libv8 -- --with-system-v8

1
भाग्य नहीं :( त्रुटि से निम्न पंक्तियाँ दिलचस्प लग रही थीं: g ++ - 4.6: त्रुटि: x86_64: ऐसी कोई फ़ाइल या निर्देशिका g ++ - 4.6: त्रुटि: अपरिचित विकल्प '
-arch

1
मैंने पाया है कि बेहतर काम करने libv8से पहले स्थापित करना therubyracer
क्रिस पीटर्स

24

गीथूब पर पोस्ट किए गए टर्टम के समाधान ने इसे मेरे लिए हल कर दिया, संबंधित गीथूब मुद्दे पर और यहां प्रस्तावित सभी अन्य समाधानों को आजमाने के बाद ।
मेरे पास सटीक सिस्टम कॉन्फ़िगरेशन था।
यह el capitan पर है, इसलिए प्रश्न का सटीक उत्तर नहीं है, लेकिन लोगों को यह जानकारी उपयोगी लग सकती है।

मैं इसे दृश्यता के लिए यहाँ उद्धृत कर रहा हूँ:

उसी समस्या का समाधान किया

  • MacOS 10.11.2
  • माणिक 1.9.3
  • libv8 3.16.14.13
  • उपचारात्मक 0.12.2

-

brew tap homebrew/versions  
brew install v8-315  
brew link --force v8-315  
bundle install  
brew unlink v8-315

यदि आप भी libv8 स्थापित नहीं कर सकते हैं,

gem install libv8 --with-system-v8

या

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

1
इसने मेरे लिए काम किया। मैंने पाया कि मुझे libv8 मणि के संस्करण को निर्दिष्ट करने की आवश्यकता है जो रूबीरर स्थापित करने की उम्मीद करता है।
पॉल स्टर्गेस

1
हाँ मुझे विश्वास है कि bundle config build.libv8 --with-system-v8मेरे लिए महत्वपूर्ण था। धन्यवाद!
नैटबीटी

यह केवल एक चीज थी जो मेरे लिए काम करती थी (और कैटालिना पर 2019 के अंत में कोशिश कर रही थी)
सैम जॉनसन

बहुत उपयोगी, भले ही होमब्रे / संस्करणों को हटा दिया गया था। मेरी समस्या यह थी कि मेरा वर्तमान लिंक '/ usr / लोकल / बिन / d8' से जुड़ा था। उस अनलिंकिंग और रनिंग brew link --force v8-315ने मेरे लिए काम किया। 2/2020 - मैकओएस 10.15.3। - रूबी संस्करण 1.9.3 - बुंडलर 1.16.4 - libv8 संस्करण 13.16.14.19
थॉमस

12

आप सभी के लिए macOS 10.15 का उपयोग करते हुए, काढ़ा बदल गया है, इसलिए आपको इन आदेशों को करने की आवश्यकता होगी।

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

6

उपरोक्त उत्तर मेरे काम नहीं आए; मेरे बंडल विन्यास ने disable-shared-gemsसक्षम किया है जो अतिरिक्त समस्याओं का कारण बनता है।

मैं Yosemite 10.10.1, रेल 3.2.x और रूबी 1.9.3p550 का उपयोग कर रहा हूं।

मेरे लिए निम्नलिखित स्निपेट ने मेरे bin/setupलिए समस्या तय कर दी है।

if ! bundle show therubyracer; then
    bundle config build.libv8 --with-system-v8
    gem install --install-dir vendor/bundle libv8 -v 3.16.14.7
    gem install libv8 -v 3.16.14.7
    gem install --install-dir vendor/bundle therubyracer 
fi

4

मुझे उपरोक्त समस्या का समाधान मिला।

यह libv8 और therubyracer के बीच संगतता का अधिक है।

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

gem install therubyracer -v '0.10.2'

यह ठीक काम करना चाहिए क्योंकि दोनों संस्करण मेरे साथ संगत हैं। प्रारंभ में मैं थेरैब्रायसर के लिए संस्करण 0.12.0 स्थापित करने की कोशिश कर रहा था और समस्या का सामना कर रहा था। एक बार जब मैंने संस्करण 0.10.2 पर स्विच किया, तो सब कुछ ठीक काम किया।

मेरा वर्तमान OS: Mavericks


3

मुझे यह मुद्दा मिल गया है MacOS Mojave 10.14.2और मैं इस मुद्दे को ठीक करने में सक्षम था जब मैंने पाया कि पैकेज कहाँ v8-315स्थापित किया गया था और फ़ोल्डर का नाम क्या था। मेरे मामले में, यह यहाँ था /usr/local/opt/v8@3.15

इसे ठीक करने के लिए, मैंने अगला भाग लिया है:

brew install v8-315
gem install libv8 -v '3.16.14.15' -- --with-system-v
gem install therubyracer -v '0.12.2' -- --with-system-v8 --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

1

लगभग दो दिनों तक मेरा सिर फोड़ने के बाद इसने मेरे लिए काम किया।

rvm install 2.2.2
gem install rails
bundle install

1

मैं libv8 के x64 (64-बिट संस्करण) को स्थापित करने के बावजूद, libv8 निर्भरता के कारण macOS Catalina 10.15 पर निर्माण करने के लिए चिकित्सीय नहीं प्राप्त कर सका।

मेरे लिए समाधान, थेरैबरैसर से mini_racer में स्विच करना था, स्थापित किया गया mini_racer रत्न (स्थानीय स्तर पर निर्माण की आवश्यकता के बिना) और, हे प्रिस्टो! मैं जारी रख सकता था।

कोशिश करो!


सिवाय जब आपकी परियोजना के लिए सीएसएस को संकलित करने के लिए कम फ़ाइलों की आवश्यकता होती है: /
मार्टिन केयरल

1

मेरे मामले में

MacOS: कैटालिना , रूबी: 2.3.3 , आरएनवीवी (आरवीएम नहीं) का उपयोग करके , मुझे आवश्यक चिकित्सीय संस्करण: 0.12.3 (कोई फर्क नहीं पड़ता)

मैंने सभी समाधान की कोशिश की लेकिन मेरे लिए क्या काम किया, प्रिय pls आँख बंद करके पेस्ट समाधान (मेरे मामले में मैंने जो किया है) कॉपी न करें, पहले पढ़ें और फिर नीचे दिए गए कमांड में संस्करणों को बदलें यदि आपको कोई आवश्यकता है। अधिकांश आदेशों में से अधिकांश उत्तर सामान्य हैं, लेकिन इस उत्तर के लिए जूजी ज़ी के लिए धन्यवाद के gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)बजाय मेरे लिए क्या काम कियाgem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

1. brew install gcc
2. brew tap homebrew/versions   (If it wont work then below 2 steps, for latest MacOS version)
2.a. brew tap brewsci/bio
2.b. brew tap brewsci/science
3. brew install v8-315     (uninstall if v8 installed previously without '-315')
4. gem install libv8 -v '3.16.14.19' -- --with-system-v8   (Be careful with the libv8 version mentioned in this command, replace version number with one required)
5.a. gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315    (If it does not work then try below one, In my case below command worked)
5.b. gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)

हो गया, फिर अपने साथ जारी रखो bundle install

नोट : जब मणि स्थापित थेरेपी , जाँच करें कि libv8 के किस संस्करण के लिए संस्थापन किया जा रहा है, यदि यह चरण 4 में उल्लिखित की तुलना में भिन्न है, तो आपका उपचारक स्थापित नहीं हो सकता है, इसलिए बस एक काम करें, gem uninstall libv8फिर चरण 4 को बदलकर दोहराएं संस्करण , जो आप थ्रोबायरासर स्थापित करते समय कंसोल में देख सकते हैं


1

यह मेरे लिए काम किया है:

gem install libv8 -v '3.16.14.17' -- --with-system-v8
brew install v8-315
gem install therubyracer -v '0.12.3' --source 'http://rubygems.org/' -- --with-v8-dir='/usr/local/opt/v8@3.15'

अंतिम आदेश के लिए brew --prefix v8-315मेरे मामले में यह था के उत्पादन की जाँच करें /usr/local/opt/v8@3.15


0

नीचे दिए गए आदेशों ने कैटालिना में बंडलर के साथ मेरे लिए इसे हल किया

$ 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

-2

मैंने देखा कि जब हम किसी समस्या का सामना करते हैं:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension

फिर आपको बिल्ड-आवश्यक स्थापित करना चाहिए

sudo apt install build-essential

यह मेरे लिए mini_race की स्थापना समस्याओं के साथ काम करता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.