Ruby命令-t SEGV

时间:2012-01-29 10:59:07

标签: ruby vim rake ubuntu-11.10

我在ubuntu 11.10上安装了vim-gnome并正常工作。使用vundle并安装了seeral软件包。

我已经安装了command-t但是在编译C扩展之前它不会起作用。阅读手册这是解决方案。

  rake make

对我来说,位置实际上是:

~/.vim/bundle/command-t

无论如何,所以我按照命令-t帮助指南中的建议关闭了rvm并安装了系统1.8。 我检查了文档,命令错误的最常见原因是编译错误的ruby。

所以我找到了这个命令来检查编译版本。

renshaw@renshaw-TravelMate-5740G:~/.vim/bundle/command-t$ ldd `which vim` | grep ruby
libruby1.8.so.1.8 => /usr/lib/libruby1.8.so.1.8 (0x00007f913932c000)

所以我为ruby 1.8安装了rake并使用rake make

编译
renshaw@renshaw-TravelMate-5740G:~/.vim/bundle/command-t$ sudo rake make
/usr/bin/ruby1.8 extconf.rb
checking for ruby.h... yes

然后关闭它并编译。

但是启动gvim并运行命令t和

的\ t
Vim: Caught deadly signal SEGV
Vim: Finished.
Segmentation fault

如何在ubuntu 11.10上运行命令?

更新

使用

从源代码构建Gvim
hg clone https://vim.googlecode.com/hg/ vim
cd vim
sudo ./configure --enable-rubyinterp=yes --enable-pythoninterp=yes --enable-gui=gtk2
make 
make install

vim --version | grep ruby

vim version命令返回正确的ruby支持是针对我安装的系统1.8构建的,但在使用命令T时它仍然是SEGV。

所以找到并尝试了这个

cd ~/.vim/ruby/command-t
/usr/bin/ruby extconf.rb
make

这也失败了。 然后我将其从之前的支持票证添加到bashrc。

vim() {
    (unset GEM_PATH GEM_HOME; command vim "$@")
}

4 个答案:

答案 0 :(得分:13)

使用rake任务时遇到了类似的问题。我通过自己编译扩展来解决它。

从command-t插件目录:

rvm use system    
cd ruby/command-t
ruby extconf.rb
make
sudo make install

答案 1 :(得分:2)

Ubuntu 13.04有同样的问题。尝试不同的组合后,这对我有用。

我不喜欢从源代码构建,因此我使用了vim-nox软件包:

sudo apt-get install vim-nox

现在,在使用Ruby 1.8.7或Ruby 2.0.0编译command-t时,捕获了SEGV信号。为了试验不同的Ruby版本,我安装了rvm

curl -L https://get.rvm.io | bash

然后我使用Ruby 1.9.1编译命令-t扩展名:

rvm install 1.9.1
rvm use 1.9.1
cd ~/.vim/bundle/command-t/ruby/command-t
ruby extconf.rb
make

总结一下:vim-nox + ruby​​ 1.9.1 = vim command-t在Ubuntu 13.04上运行良好。

答案 2 :(得分:1)

我在these instructions之后使用Ubuntu 11.10并使用Ruby 1.9.2p290构建Vim和Command-T -

sudo apt-get install python-dev ruby-dev mercurial ncurses-dev liblua5.1-0-dev lua5.1

rvm use 1.9.2

hg clone https://vim.googlecode.com/hg/ ~/vim 
cd ~/vim
hg update -C v7-3-154
./configure --with-features=huge  --disable-largefile \
        --enable-perlinterp   --enable-pythoninterp \
        --enable-rubyinterp   --enable-gui=gtk2 \      
make
sudo make install

然后关注病原体的Command-T installation instructions,就我而言。

答案 3 :(得分:0)

这就是我解决这个问题的方法(我相信它是由版本错配引起的):

我安装了旧版本的vim(来自apt使用debian)。旧版本的vim使用的是旧版1.9.x版本的Ruby库。我根据https://github.com/wincent/Command-T中的指南编译了命令-t。我在编译过程中使用了ruby 2.1.x.当我做的时候我得到了SEGV。我相信它是由我在编译command-t时使用的Ruby与Ruby vim正在使用之间的版本不匹配引起的。因此修复是针对编译命令-t的相同Ruby库编译vim。当我使用" apt-get install vim"升级我的vim时一切都开始奏效了。现在,新版本的vim使用了包管理器附带的新Ruby库。