OSX पर rbenv और कमांड-टी के साथ Vim का निर्माण


2

dyld: आलसी प्रतीक बाइंडिंग विफल: प्रतीक नहीं मिला: _rb_encdb_declare से संदर्भित: /User/sa125/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0/enc/encdb.bundle इसमें अपेक्षित: फ्लैट नेमस्पेस

dyld: प्रतीक नहीं मिला: _rb_encdb_declare से संदर्भित: /User/sa125/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0/enc/encdb.bundle इसमें अपेक्षित: फ्लैट नेमस्पेस विम: घातक सिग्नल SEGV पकड़ा

नमस्ते,

मैंने अपने मैकबुकप्रो (OSX 10.6.8) पर विम का निर्माण किया है, और काम करने के लिए कमांड-टी प्राप्त करने की कोशिश कर रहा हूं। मेरे सिस्टम पर माणिक RBENV द्वारा प्रदान किया गया है, और मैंने विम बनाने और स्थापित करने के लिए निम्नलिखित सरल स्क्रिप्ट का उपयोग किया है:

#!/bin/bash

make distclean

./configure --with-features=huge \
            --enable-rubyinterp=yes \
            --with-ruby-command=`rbenv which ruby` \
            --enable-pythoninterp \
            --enable-perlinterp \
            --enable-cscope=yes \

make
make install

Vim कंपाइल करता है और सब कुछ काम करता है, कमांड-टी को छोड़कर। मैंने रीपो को क्लोन करके और रन करके कमांड-टी को फिर से स्थापित किया rake make && make रूट फ़ोल्डर के अंदर, समान रूबी संस्करण (1.9.3-p194) सुनिश्चित करते हुए विम और कमांड-टी को संकलित करने के लिए उपयोग किया गया था। जब मैं विम चलाता हूं और कमांड-टी को लोड करता हूं, तो यह निम्नलिखित त्रुटि के साथ क्रैश होता है:

dyld: lazy symbol binding failed: Symbol not found: _rb_encdb_declare
Referenced from: /Users/sa125/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0/enc/encdb.bundle
Expected in: flat namespace

dyld: Symbol not found: _rb_encdb_declare
Referenced from: /Users/sa125/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0/enc/encdb.bundle
Expected in: flat namespace

Vim: Caught deadly signal SEGV

मैंने दोनों को एक अलग रूबी संस्करण (1.9.2-p320) के साथ बनाने की कोशिश की है, लेकिन परिणाम समान था। यदि बाकी सब विफल रहता है, तो मैं उपयोग करूंगा CtrlP (जो महान भी है), लेकिन मैं इसे एक और देना चाहूंगा और कम से कम यह पता लगाऊंगा कि यह क्या मार रहा है, इसलिए कोई भी विचार मदद करेगा। धन्यवाद।


मैकविम क्यों नहीं?
romainl

मैं टर्मिनल और गुइ विम के बीच वैकल्पिक - मैं दोनों काम करना चाहते हैं।
sa125

MacVim एक CLI निष्पादन योग्य के साथ आता है। आपको CLI और GUI में समान Vim मिलता है। बस करो $ mvim -m filename या एक उपनाम जोड़ें: alias vim='mvim -m'। मैक ओएस एक्स पर हाथ से संकलन विम है पूरी तरह से निकम्मा।
romainl

@romainl नहीं, यदि आप MacVim द्वारा शामिल नहीं किए गए विकल्पों के समर्थन के साथ vim बनाना चाहते हैं तो यह नहीं है।
Telemachus

ठीक है "लगभग पूरी तरह से बेकार", फिर। मैं उत्सुक हूं: क्या आप चाहते थे कि मैकविम में विकल्प उपलब्ध नहीं थे?
romainl

जवाबों:


1

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

यहाँ Googlers के लिए आसान बनाने के लिए पैच है:

diff --git a/missing/setproctitle.c b/missing/setproctitle.c
index 169ba8b..4dc6d03 100644
--- a/missing/setproctitle.c
+++ b/missing/setproctitle.c
@@ -48,6 +48,12 @@
 #endif
 #include <string.h>

+#if defined(__APPLE__)
+#include <crt_externs.h>
+#undef environ
+#define environ (*_NSGetEnviron())
+#endif
+
 #define SPT_NONE   0   /* don't use it at all */
 #define SPT_PSTAT  1   /* use pstat(PSTAT_SETCMD, ...) */
 #define SPT_REUSEARGV  2   /* cover argv with title information */

फिर, अगर यह किसी और की मदद करता है, तो यहां ए माणिक का निर्माण सूत्र जो मैं इस पैच और फ़ाल्कन पैच को जोड़ने के लिए उपयोग करता हूं:

build_package_combined_patch() {
  local package_name="$1"

  {
    curl https://raw.github.com/gist/3905045/bf9d1c84c72cdce5be52d8b2dfd4d86a1cdbf185/gistfile1.txt | git apply
    curl https://raw.github.com/wayneeseguin/rvm/master/patches/ruby/1.9.3/p286/falcon.diff | git apply
    autoconf
    ./configure --prefix="$PREFIX_PATH" $CONFIGURE_OPTS --enable-shared
    make -j 8
    make install
  } >&4 2>&1

}

require_gcc

install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz"
install_package "ruby-1.9.3-p286" "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz" combined_patch

EDIT 31 अगस्त 2013 : रूबी के वर्तमान संस्करणों को अब इस पैच की आवश्यकता नहीं है (रूबी में यह डिफ़ॉल्ट रूप से है)। हालांकि, अभी भी एक चीज है जो गलत हो सकती है। आपको यह सुनिश्चित करना चाहिए कि रूबी एक साझा पुस्तकालय के रूप में बनाया गया है। यदि विम इसी तरह से दुर्घटनाग्रस्त हो जाता है, तो संभवतः इस मुद्दे के साथ क्या करना है। सुनिश्चित करें कि आपके कॉन्फ़िगर विकल्पों में शामिल हों --enable-shared। (देख यह बग रिपोर्ट आगे की चर्चा के लिए।)


2

आप बस rbenv को बायपास कर सकते हैं और Vim को कॉन्फ़िगर करते समय रूबी सिस्टम का उपयोग कर सकते हैं:

./configure --with-ruby-command=/usr/bin/ruby

और कमांड-टी स्थापित करते समय भी:

/usr/bin/ruby extconf.rb && make

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