f

アーカイブ

2014-07-19

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
xstowにより~/local/{bin,lib,include}に対応するサーチパスを通している。


以下の流れでインストールする。
  1. termcap
  2. ncurses
  3. readline
  4. lua
  5. vim


ReadlinetermcapLuaのインストールに必要。また,Vimのインストールでもオプションを有効化できる。ncursesLuaには必要ないが,Vimのインストールに必要。readlineのインストールの時にオプションを有効化できるので先にncuresesをインストールしておく。


8.9.1 termcap

配布元:GNU Project Archives http://ftp.gnu.org/gnu/termcap/


cd ~/local/src
./configure --prefix=$HOME/local/stow/termcap-1.3.1
make
make install
cd $HOME/local/stow/
xstow termcap-1.3.1




8.9.2 ncurses

配布元:Announcing ncurses 5.9 - GNU Project - Free Software Foundation (FSF) http://www.gnu.org/software/ncurses/ncurses.html


cd ~/local/src
./configure --prefix=$HOME/local/stow/ncurses-5.9
make
make install
cd $HOME/local/stow/
xstow ncurses-5.9




8.9.3 Readline

配布元:The GNU Readline Library http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html


cd ~/local/src
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/
xstow readline-6.3




8.9.4 Lua

配布元:Lua: download http://www.lua.org/download.html


cd ~/local/src
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
xstow lua-5.2.3


make linux実行時に躓いたのでエラー内容を以下にメモしておく。

8.9.4.1 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.


8.9.4.2 ライブラリの未指定

readlineをインストールしていてもライブラリの指定をconfigure時にMYLIBSでしないと以下のエラーが出る。
gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline
/usr/bin/ld: cannot find -lreadline


src/Makefileを確認すれば詳細はわかる。

8.9.4.3 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


8.9.5 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
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
xstow 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のビルドオプションを掲載しておく。


senooken% 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





0 件のコメント:

コメントを投稿