Creazione di Vim con rbenv e Command-T su OSX


2

dyld: associazione simboli pigri non riuscita: simbolo non trovato: _rb_encdb_declare Riferimenti da: /Users/sa125/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0/enc/encdb.bundle Previsto in: spazio dei nomi piatto

dyld: simbolo non trovato: _rb_encdb_declare Riferito a: /Users/sa125/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin10.8.0/enc/encdb.bundle Atteso in: spazio dei nomi piatto Vim: Catturato segnale mortale SEGV

Ciao,

Ho creato vim sul mio MacbookPro (con OSX 10.6.8) e cercando di far funzionare Command-T. Il rubino sul mio sistema è fornito da RBENV e ho usato il seguente semplice script per compilare e installare vim:

#!/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 si compila e tutto funziona, tranne Command-T. Ho reinstallato Command-T clonando il repository ed eseguendolo rake make && makeall'interno della cartella principale, assicurandomi che la stessa versione ruby ​​(1.9.3-p194) fosse usata per compilare vim e Command-T. Quando eseguo vim e carico Command-T, si blocca con il seguente errore:

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

Ho provato a costruire entrambi con una versione rubino diversa (1.9.2-p320), ma il risultato è stato lo stesso. Se tutto il resto fallisce, lo userò CtrlP(il che è anche fantastico), ma mi piacerebbe provarlo e almeno scoprire cosa lo sta uccidendo, quindi qualsiasi idea aiuterà. Grazie.


Perché non MacVim?
romainl

Alterna tra terminal e gui vim: mi piacerebbe che entrambi funzionassero.
sa125,

MacVim viene fornito con un eseguibile CLI. Ottieni esattamente lo stesso Vim in CLI e GUI. Basta fare $ mvim -m filenameo aggiungere un alias: alias vim='mvim -m'. Compilare Vim a mano su Mac OS X è totalmente inutile.
Romainl

@romainl No, non lo è se vuoi creare vim con supporto per opzioni non incluse da MacVim.
Telemaco,

OK "quasi totalmente inutile", quindi. Sono curioso: quali opzioni volevi che non fossero disponibili in MacVim?
romainl

Risposte:


1

Ho scritto un post sul blog sulle mie esperienze con lo stesso problema, ma in poche parole penso che devi applicare questa patch alla tua build Ruby e quindi compilare Vim con quel Ruby specificato. Quando compili Command-T, assicurati di usare lo stesso interprete Ruby.

Ecco la patch per facilitare i googler:

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 */

Ancora una volta, se aiuta chiunque altro, ecco una formula di ruby-build che utilizzo per automatizzare l'aggiunta di questa patch e delle patch falcon:

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

MODIFICA 31 agosto 2013 : le versioni correnti di Ruby non necessitano più di questa patch (per impostazione predefinita è presente in Ruby). Tuttavia, c'è ancora una cosa che può andare storto. Devi assicurarti che Ruby sia costruito come una libreria condivisa. Se Vim si blocca allo stesso modo, probabilmente ha a che fare con questo problema. Assicurati di aggiungere le opzioni di configurazione includi --enable-shared. (Vedi questa segnalazione di bug per ulteriori discussioni.)


2

Potresti semplicemente bypassare rbenv e utilizzare il sistema Ruby durante la configurazione di Vim:

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

e anche quando si imposta Command-T:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.