Compiling Vim from source for Ubuntu and Mac with ruby and python support

Posted on , updated by

This article describes how to build Vim (vim and gvim) from the source and compile it against a predefined version of ruby installed with rbenv. In the first chapter I'm describing how to build it from source for Ubuntu. The second part describes how to build for MacVim.

By installing Vim with ruby support from the sources, it is build against the system wide installation of ruby. If you already installed Vim and/or ruby with sudo apt-get install vim (or sudo apt-get install ruby) or with brew install vim (e.g. brew install ruby) if you are using OS X, remove it completely from your system to install the latest version of Vim.

Install rbenv

I'm installing rbenv on different machines I created the following script (named rbenv_install.sh) to install ruby 1.9.2-p320:

cd $HOME
sudo rm -rf .rbenv
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

# install steps for rbenv-install command
cd $HOME/Downloads
sudo rm -rf ruby-build
git clone git://github.com/sstephenson/ruby-build.git
cd ruby-build
sudo bash install.sh

# updating the current shell
cd $HOME
exec $SHELL
source $HOME/.bash_profile

rbenv-install 1.9.2-p290
rbenv rehash
exec $SHELL

After this try the following:

$ rbenv global 1.9.2-p320
$ rbenv local 1.9.2-p320
$ ruby -v
=> ruby 1.9.2p320 (2012-04-20 revision 35421) [i686-linux]

Get the latest version of Python

This will be put in the $HOME/lib folder:

cd /tmp
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar xjvf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=$HOME
make && make install
make inclinstall
hash -r

# cleanup
cd /tmp && rm -rf Python-2.7.3

Get the latest version of Vim

Visit vim.org and select the right download for your operation system (mainly Unix). If you are using a Unix system yo can get the latest Vim from here, download and unzip it:

$ cd $HOME/Downloads
$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
$ tar -xjvf vim-7.4.tar.bz2

You can also get the latest Vim version from the git repository https://github.com/b4winckler/vim and checkout the latest tag you want to have.

Compiling Vim and Gvim

To install Gvim on Ubuntu we need to install additional packages on our machine. The following snippets describe the packages for Ubuntu:

$ sudo apt-get install libncurses-dev libgnome2-dev \
 libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev \
 libx11-dev libxpm-dev libxt-dev

Next, we need to configure the compilation and make the install:

cd ~/git-repositories/vim && git checkout v7-4-183 && git clean -f

./configure --prefix=/usr/local \
  --without-x \
  --disable-nls \
  --enable-gui=no \
  --enable-multibyte \
  --enable-rubyinterp \
  --enable-luainterp \
  --enable-pythoninterp \
  --with-python-config-dir=$HOME/lib/python2.7/config \
  --enable-gui=gnome2 \
  --with-features=huge \
  --with-tlib=ncurses \

sudo make && sudo make install && sudo make clean

Let's get over the heavy stuff:

  • --prefix=/usr/local - place of the binaries of the installed Vim installation (check the /usr/local/bin) - there will be the executable binaries
  • --enable-rubyinterp - says you want to build Vim with the default ruby installation (in our case /home/mg/.rbenv/shims/ruby)
  • --enable-gui=gnome2 - building Vim with Gvim support (if you don't want Gvim than you can leave this line out)

After configuring the compilation check if the console response contains the following terms:

checking --with-ruby-command argument... defaulting to ruby
checking for ruby... (cached) /home/mg/.rbenv/shims/ruby
checking Ruby version... OK
checking Ruby header files... /home/mg/.rbenv/versions/1.9.2-p320/include/ruby-1.9.1

If you can't see the lovely Ok, your Vim compilation will probably not have ruby support. Maybe you have not installed ruby the right way or some packages are missing on your machine.

Check the installation

Open a new session or perform exec $SHELL to reboot your Shell. You will see the fresh installed version of Vim:

$ which vim
/usr/local/bin/vim

$ which gvim
/usr/local/bin/gvim

Next check is to get the correct --version of vim and gvim with the following commands:

$ vim --version | ack ruby
$ vim --version | ack python
$ gvim --version | ack ruby
$ gvim --version | ack python

If both commands return +ruby and +python, you are fine, and got the achievement "I installed vim form source with ruby support on my own". You should now be able to run the Hammer.vim plugin - install it, start it with :Hammer, install the missing gems and if you are able to run :Hammer without any missing dependencies, you have setup everything correct.

Installing MacVim from source

The ways are nearly the same as mentioned above: Install rbenv as mentioned in the steps before.

$ cd $HOME/Download
$ git clone git://github.com/b4winckler/macvim.git

Next step is to configure MacVim for OSX:

$ cd macvim/src
$ ./configure --prefix=/usr/local \
              --with-features=huge \
              --enable-rubyinterp \
              --enable-pythoninterp \
              --enable-perlinterp \
              --enable-cscope

After configuring the compilation check the console response after the following terms:

checking --with-ruby-command argument... defaulting to ruby
checking for ruby... /Users/helex/.rbenv/shims/ruby
checking Ruby version... OK
checking Ruby header files... /Users/helex/.rbenv/versions/1.9.2-p320/include/ruby-1.9.1

When this is finished, it is time build MacVim with make:

$ make

Next step is to run the MacVim installation:

open MacVim/build/Release/MacVim.app

The window should open MacVim. Run the following command in the MacVim quickfix window:

:ruby puts "MacVim"

In the next step, you can drop the MacVim.app icon in your Application folder and you are done.

Conclusion

It was a pain to gather the information for building vim by source with rbenv. Duration of finding that was: ~ 6 h. I'm not sure if all of this works on RVM - I just need additional feedback from people using it. Happy "Vim-ing"!

Further reading

Hierarchy: previous post , next post
Tags: vim, linux, ruby, howto