miauのブログ

はてなダイアリー「miauの避難所」をはてなブログに移行しました

Aap を使って Vim をインストール

ちょっと CentOS 環境で Vim 7.3 を使いたくなったので、インストール方法を調べてみました。

によると、Aap というのを使えばファイルのダウンロードやパッチ適用が自動化できるようなのですが、7.3 を入れるには一工夫必要だったので、主にその辺りのメモです。

(2012-02-21 追記)
Referer 見てると、vim-users.jp – Lingr

Bram さんのプロジェクトだった気がする。 >Aap
ぶっちゃけ今やるなら素直に Mercurial でいいと思う。

とのことなので、Mercurial 入れたくない人だけ気にすれば大丈夫だと思います。
(2012-02-21 追記ここまで)

Aap のインストール

を参考に aap をインストールします。

cd /usr/local/src
wget http://sourceforge.net/projects/a-a-p/files/Aap/1.091/aap-1.091.zip/download
unzip aap-1.091.zip -d aap
cd aap
./aap install

インストールできていることを確認しておきます。

# aap --version
A-A-P recipe executive version 1.091; released 2009 May 17 03:05:06 PM GMT
0

Aap を使って Vim をインストール→7.2 がインストールされる

※「細かいことはいいから 7.3 をインストールしたい」という場合は読み飛ばしてください。

Aap を使ったインストール手順に従うと、最新の 7.3 ではなく 7.2 が入ります。aap を実行したディレクトリに patches や *.done みたいなファイルが作られますので、専用のディレクトリを作って作業したほうがよいです。

mkdir -p /usr/local/src/vim
cd /usr/local/src/vim
aap -f http://www.a-a-p.org/vim/main.aap CVS=no fetch
echo "--with-features=huge" >> vim/src/config.arg
aap
aap install

aap で configure オプションを指定する方法については、

を参考にしました。ここに書いてあるとおり、--with-features を指定しないと日本語が化けたりしました。

今回はオプションとして「--with-features=huge」のみ指定していますが、このオプションでインストールした場合、CentOS 5.5 に入っている Vim 7.0 に比べて

  • clientserver
  • clipboard
  • float(7.2 で増えたオプション)
  • X11
  • xfontset
  • xsmp_interact
  • xterm_clipboard

の機能が増えて、

  • mouse_gpm
  • mouse_sysmouse(7.2 で増えたオプション)
  • perl
  • python

が減ることになります。調整したい場合は ./configure --help で出てくるオプションを vim/src/config.arg に追加しましょう。

各機能で何ができるかについては

が参考になりそうです。

ちなみに、/usr/local/bin/vim としてインストールされるようなので、CentOS で元々入っている /usr/bin/vim と併用できそうです。

(追記)

他のパスにインストールするには、

にあるように、aap install 時に PREFIX=/home/hoge を渡せばいいみたいです。

Aap を使って Vim 7.3 をインストールする

バージョンの指定は main.aap で行われているようなので、

mkdir -p /usr/local/src/vim73
cd /usr/local/src/vim73
wget http://www.a-a-p.org/vim/main.aap

として取得した main.app を

--- main.aap.org        2011-01-08 22:47:51.000000000 +0900
+++ main.aap    2011-01-11 20:23:51.000000000 +0900
@@ -10,8 +10,8 @@
     CVS =
 cvs ?= yes

-VLong = 7.2
-VShort = 72
+VLong = 7.3
+VShort = 73
 CVSname = vim7
 SUBDIR =

@@ -60,7 +60,7 @@
            :update gzip-$(VShort).done

        # Get the extra files.
-       :update extra-$(VShort).done
+#      :update extra-$(VShort).done

        # Apply the patches
        :update patch

のように編集します。

バージョンの変更は良いとして、extra〜の行をコメントアウトしているのは、

There are no extra files for Vim 7.3, everything is in the main archive.

とのことで、Vim 7.2 までで必要だった vim-x.x-extra.tar.gz と vim-x.x-lang.tar.gz を実行させないためです。コメントアウトしないと app fetch 実行時に、

Aap: Error in recipe "/usr/local/src/vim/main.aap" line 135: fetch failed for "['vim-7.3-lang.tar.gz']"

のようなエラーになってしまいます。

編集が完了したら main.app がサーバ上のもので上書きされないよう、--nofetch-recipe のオプションつきで fetch して・・・

aap --nofetch-recipe CVS=no fetch

あとは 7.2 のときの手順と同じです。

echo "--with-features=huge" >> vim/src/config.arg
aap
aap install

7.2 と比べると、

+conceal
+cursorbind
-lua
+persistent_undo
-python3
+startuptime

のような機能が増えており、デフォルトで無効になっていた

+netbeans_intg

が有効になっているようです。

(追記)

上記の方法でインストールした vim 7.3 を起動すると

~                                  Vi互換モードで動作中
~                     Vim推奨値にするには    :set nocp<Enter>
~                     詳細な情報は           :help cp-default<Enter>

とか出てます。:scriptnames で確認すると、vim 7.0 のときは読み込まれていた

  1: /etc/vimrc
  2: /usr/share/vim/vim70/syntax/syntax.vim
  3: /usr/share/vim/vim70/syntax/synload.vim
  4: /usr/share/vim/vim70/syntax/syncolor.vim
  5: /usr/share/vim/vim70/filetype.vim

が読み込まれていないようで。元々

      システム vimrc: "/etc/vimrc"
        ユーザ vimrc: "$HOME/.vimrc"
         ユーザ exrc: "$HOME/.exrc"
       省略時の $VIM: "/usr/share/vim"

だったのが

      システム vimrc: "$VIM/vimrc"
        ユーザ vimrc: "$HOME/.vimrc"
         ユーザ exrc: "$HOME/.exrc"
       省略時の $VIM: "/usr/local/share/vim"

になってしまっているみたいですね。まだ ~/.vimrc を置いていない環境だったので、とりあえず

cp /etc/vimrc ~/.vimrc

して対応しています・・・。

その他参考サイト

最初参考にしていたサイトです。今回は開発機に mercurial を入れたくなかったので結局 aap でインストールしましたが、aap を使うとパッチを一つ一つダウンロードするので、mercurial で取得したほうが速い気がします。

また、--disable-selinux 等のオプションについても記載されています(これを付加しないとエラーになったという報告も見かけました)し、perlpythonrubylua の有効化オプションについても記載されていますので、何かあったらこちらの手順を参考にするのがいいかと。