Install Vim from source with Lua
最強の補完プラグインと名高いneocompleteに対応させる ためにluaをあり(enable)にしたVimをインストールしたい。また関連ファイルも合わせてソースからインストールしたい。以下のサイトを参考にやってみた。
参考:Lua対応Vimをインストール – rcmdnk’s blog http://rcmdnk.github.io/blog/2013/08/07/computer-vim/
ビルド環境:Ubuntu 14.04
stowにより$HOME/.local/{bin,lib,include}に対応するサーチパス(以下のコマンドを.bashrcに記述)を通している。
export PATH="$HOME/.local/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/.local/lib:$LD_LIBRARY_PATH"
export CPATH="$HOME/.local/include:$CPATH"
以下の順番でインストールする。
- termcap
- ncurses
- readline
- lua
- vim
ReadlineとtermcapはLuaのインストールに必要。また,Vimのインストールでもオプションを有効化できる。ncursesはLuaには必要ないが,Vimのインストールに必要。 readlineのインストールの時にオプションを有効化できるので先にncuresesをインストールしておく。
termcap
配布元:GNU Project Archives http://ftp.gnu.org/gnu/termcap/
cd ~/.local/src
wget -nc http://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
tar zxf termcap-1.3.1.tar.gz
cd termcap-1.3.1
./configure --prefix="$HOME/.local/stow/termcap-1.3.1"
make
make install
cd "$HOME/.local/stow/"
stow termcap-1.3.1
Readline
配布元:The GNU Readline Library http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
cd ~/.local/src
wget -nc ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz
tar zxf readline-6.3.tar.gz
cd readline-6.3
./configure --prefix=$HOME/.local/stow/readline-6.3
make
make install
cd $HOME/.local/stow/
stow readline-6.3
Lua
配布元:Lua: download http://www.lua.org/download.html
cd ~/.local/src
wget -nc http://www.lua.org/ftp/lua-5.2.3.tar.gz
tar zxf lua-5.2.3.tar.gz
cd lua-5.2.3
make linux MYLIBS="-L$HOME/.local/lib -ltermcap"
make install INSTALL_TOP=$HOME/.local/stow/lua-5.2.3
cd ~/.local/stow
stow lua-5.2.3
make linux実行時に躓いたのでエラー内容を以下にメモしておく。
readlineの不足
readline がインストールされていないと,まず以下のエラーが出る。
gcc -O2 -Wall -DLUA_COMPAT_ALL -DLUA_USE_LINUX -c -o lua.o lua.c lua.c:67:31: fatal error: readline/readline.h: No such file or directory #include <readline/readline.h> ^ compilation terminated.
ライブラリの未指定
readlineをインストールしていても,configure時にMYLIBS変数でライブラリを指定しないと以下のエラーが出る。
gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline /usr/bin/ld: cannot find -lreadline
src/Makefile を確認すればなぜMYLIBS変数での指定が必要かの詳細はわかる。
termcapライブラリの不足
上記でライブラリの指定をしていても-ltermcap
を付けていないと以下のエラーが出る。
gcc -o lua lua.o liblua.a -L/home/senooken/local/lib -lm -Wl,-E -ldl -lreadline /home/senooken/local/lib/libreadline.so: undefined reference to `tputs' /home/senooken/local/lib/libreadline.so: undefined reference to `tgoto' /home/senooken/local/lib/libreadline.so: undefined reference to `tgetflag' /home/senooken/local/lib/libreadline.so: undefined reference to `UP' /home/senooken/local/lib/libreadline.so: undefined reference to `tgetent' /home/senooken/local/lib/libreadline.so: undefined reference to `tgetnum' /home/senooken/local/lib/libreadline.so: undefined reference to `PC' /home/senooken/local/lib/libreadline.so: undefined reference to `tgetstr' /home/senooken/local/lib/libreadline.so: undefined reference to `BC'
参考:Lua を一般ユーザでソースコードからインストールする – はちゅにっき http://hatyuki.hatenablog.jp/entry/2014/04/10/140848
Vim
最新版の配布元:Vim source archives : vim online http://www.vim.org/sources.php
lua のインストールに必要なオプションは以下の2種類。
- –enable-luainterp: Lua を有効にしてビルドする
- –with-lua-prefix=$HOME/local: Lua がインストールされた場所を指定
–with-features=huge: その他の雑多なオプションを有効にしてくれる。
cd ~/.local/src
wget -nc ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
tar jxf vim-7.4.tar.bz2
cd vim74
./configure --prefix=$HOME/.local/stow/vim-7.4
LDFLAGS=-L$HOME/.local/lib ./configure --prefix=$HOME/.local/stow/vim-7.4 --enable-luainterp --with-lua-prefix=$HOME/.local --with-features=huge
make
make install
cd ~/.local/stow
stow vim-7.4
以下のコマンドでlua が有効になっていることを確認する。
~/.local/stow/vim-7.4/bin/vim --version | grep lua
+dialog_con +lua -rightleft +windows Linking: gcc -L/home/senooken/.local/lib -L/usr/local/lib -Wl,--as-needed -o vim -lSM -lICE -lm -lncurses -lnsl -ldl -L/home/senooken/.local/lib -llua
なお,ncursesが入っていないとconfigureで以下のようにエラーが出る。
no terminal library found checking for tgetent()... configure: error: NOT FOUND! You need to install a terminal library; for example ncurses. Or specify the name of the library with --with-tlib.
これでLuaを有効化にしたVimをインストールできた。これでどんな環境でも最新のVimを使える。そのうちneocompleteもインストールしよう。PythonとかRubyのオプションはまだ必要に迫られていないのでまたそのときにやる。
最後に記念として今回のVimのビルドオプションを掲載しておく。
vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jul 19 2014 19:07:42) Compiled by senooken@senooken-ThinkPad-Edge-E440 Huge version with GTK2 GUI. Features included (+) or not (-): +arabic +file_in_path +mouse_sgr +tag_binary +autocmd +find_in_path -mouse_sysmouse +tag_old_static +balloon_eval +float +mouse_urxvt -tag_any_white +browse +folding +mouse_xterm -tcl ++builtin_terms -footer +multi_byte +terminfo +byte_offset +fork() +multi_lang +termresponse +cindent +gettext -mzscheme +textobjects +clientserver -hangul_input +netbeans_intg +title +clipboard +iconv +path_extra +toolbar +cmdline_compl +insert_expand -perl +user_commands +cmdline_hist +jumplist +persistent_undo +vertsplit +cmdline_info +keymap +postscript +virtualedit +comments +langmap +printer +visual +conceal +libcall +profile +visualextra +cryptv +linebreak -python +viminfo +cscope +lispindent -python3 +vreplace +cursorbind +listcmds +quickfix +wildignore +cursorshape +localmap +reltime +wildmenu +dialog_con_gui +lua +rightleft +windows +diff +menu -ruby +writebackup +digraphs +mksession +scrollbind +X11 +dnd +modify_fname +signs -xfontset -ebcdic +mouse +smartindent +xim +emacs_tags +mouseshape -sniff +xsmp_interact +eval +mouse_dec +startuptime +xterm_clipboard +ex_extra -mouse_gpm +statusline -xterm_save +extra_search -mouse_jsbterm -sun_workshop +farsi +mouse_netterm +syntax