मैक के लिए Google स्केचअप में रूबी को कैसे अपडेट करें?


1

वर्तमान में मैक के लिए Google स्केचअप में रूबी संस्करण है 1.8.5जो मुझे थोड़ा पुराना लगता है। मैं निम्नलिखित कमांड द्वारा रूबी को 1.8.7 (OSX के संस्करण) में अपडेट कर सकता हूं

$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/Versions/Current
$ ls
Headers/       Resources/     Ruby
$ ls Headers/
config.h  defines.h intern.h  missing.h ruby.h

$ rm -r Headers
$ ln -s  /System/Library/Frameworks/Ruby.framework/Headers
$ ln -fs /System/Library/Frameworks/Ruby.framework/Ruby

स्केचअप समस्या के बिना शुरू होता है और रूबी कंसोल 1.8.7 संस्करण दिखाता है।

1.9.2

अब मैं आगे जाने और अपडेट करने की कोशिश करता हूं 1.9.2-rc2। Google स्केचअप को i386बाइनरी की आवश्यकता होती है , जिसे निम्न कमांड द्वारा उत्पादित किया जा सकता है

$ cd ~/ruby-1.9.2-rc2/
$ ARCHFLAGS="-arch i386"  CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure  --with-arch=i386
$ make && sudo make install

फिर मैं स्केचअप में आवश्यक फ़ाइलों की प्रतिलिपि बनाता हूं

$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/
$ rm Headers Ruby

$ cp /usr/local/bin/ruby Ruby
$ mkdir Headers
$ cp /usr/local/include/ruby-1.9.1/i386-darwin10.4.0/ruby/config.h Headers/
$ cp /usr/local/include/ruby-1.9.1/ruby.h Headers/
$ cp -r /usr/local/include/ruby-1.9.1/ruby/* Headers/
$ ls Headers
backward/   defines.h   dl.h        intern.h    missing.h   re.h        ruby.h      util.h      vm.h
config.h    digest.h    encoding.h  io.h        oniguruma.h regex.h     st.h        version.h

और जब मैं स्केचअप शुरू करने की कोशिश करता हूं तो मुझे निम्नलिखित त्रुटि रिपोर्ट मिलती है

Exception Type:  EXC_BREAKPOINT (SIGTRAP)

Dyld Error Message:
  Library not loaded: @executable_path/../Frameworks/Ruby.framework/Versions/A/Ruby
  Referenced from: /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/SketchUp
  Reason: no suitable image found.  Did find:
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
    /usr/local/lib/Ruby: not a file
    /usr/lib/Ruby: not a file

Model: MacBookPro7,1, BootROM MBP71.0039.B05, 2 processors, Intel Core 2 Duo, 2.4 GHz, 4 GB, SMC 1.62f5

क्या आप मुझे बता सकते हैं क्यों?

Update1

डैन रथबुन ने कुछ परीक्षण किए और निम्नलिखित पाया

Win32 पर जब मैंने स्केचअप को किसी भी 1.9. लोड करने की कोशिश की तो मुझे माणिक सी फ़ंक्शन "rb_set_kcode" के लिए एक "एंट्री पॉइंट नहीं मिला" जो अब 1.9 में है। (इसका नाम बदल दिया गया था, और रूबी लोगों ने नहीं किया था) पुराने नाम को नए नाम पर उर्फ ​​करें।)

मूल रूप से स्केचअप रूबी दुभाषिया को लोड करने के बाद बस UTF8 में वर्ण एन्कोडिंग सेट करने के लिए rb_set_kcode कॉल करता है। यह 1.8.x शाखा में किसी भी रूबी के लिए ठीक काम करता है, लेकिन 1.9.x में रूबी परियोजना ने पूरी तरह से चरित्र एन्कोडिंग को फिर से परिभाषित किया, और सभी सी कार्यों को नए पहचानकर्ता दिए, और अधिक कार्य जोड़े।

1.9.x और स्केचअप का समाधान ऐसा लगता है कि स्केचअप को "रूबी संस्करण एजाइल" होना चाहिए, जिसका अर्थ है बोल्डर में Google दोस्तों द्वारा एक कोडिंग परिवर्तन।


"... जो मुझे थोड़ा पुराना लगता है।" पोस्टरिटी के लिए, कृपया इस पर विस्तार करें। आपकी राय में, रूबी अपग्रेड से Google स्केचअप क्यों प्राप्त होगा?
फिदेली

जवाबों:


1

मैं आपकी पूरी मशीन पर रूबी को अपडेट करने के अलावा जो विशेष रूप से दर्दनाक और संभावित विनाशकारी हो सकता है, रूबी के विशिष्ट संस्करणों को प्रबंधित करने के लिए आरवीएम का उपयोग करने के लिए एक और विकल्प होगा। यह विशेष रूप से अच्छा है क्योंकि आपके पूरे मशीन के लिए रूबी को अपडेट करने से किसी अन्य अनुप्रयोग का कारण हो सकता है जो एक विशिष्ट संस्करण पर निर्भर करता है।

आप कमांड लाइन से लॉन्च होने पर सेटिंग या सीधे अपने विशिष्ट रूबी संस्करण लाने के लिए आसानी से आरवीएम का उपयोग करने में सक्षम होना चाहिए।

RVM http://beginrescueend.com/

वहाँ भी एक है स्क्रीनकास्ट स्थापित करने और प्रबंधन करने के लिए कैसे RVM का ब्यौरा

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