はじめに
本記事は僕の個人ブログ( THE SNOWBALL )からの転載です。
ArchLinuxでKaoriya-Vimをビルド(Git版) - THE SNOWBALL
ArchLinuxでKaoriYa-VimをGitリポジトリからビルドする
Windowsでは香り屋さんの配布しているコンパイル済みVimが使えます。またMac OSXでは他の有志の方が香り屋パッチを当てた MacVim-kaoriya のバイナリを使うことができます。
プライベートでUbuntuを使っているので、UbuntuでもKaoriya-Vimを使いたいと考えて試みたところ上手くいったので、以前、Qiitaに下記のエントリを投稿しました。
Ubuntuでkaoriyaパッチとmigemoを有効にしてVimをビルド
当時はVim公式の開発のバージョン管理にMercurialが使われていたため、上記エントリでもそれに合わせたビルド手順を紹介しました。
その後、Vimの公式リポジトリがGoogleCodeからGitHubに2015年8月に正式移行し、バージョン管理システムもMercurialからGitに変更されました。
また個人的な事情として最近はUbuntuの他にArchLinux(正確にはArchから派生したAntergos)を使っているので、ArchLinuxでもKaoriya-Vimをビルドできないか試した結果うまくいったので紹介します。
前置きが長くなりましたが、今回紹介する内容は
- Gitリポジトリに移行したVimをソースからビルドする
- 素のVimではなく香り屋パッチを当てる
- C/migemoを使えるようにする
- ビルドを行う環境はArchLinux(Antergos)
- ほとんど同じやり方でUbuntuでもビルドできる
というものになります。
コンパイル環境
- Antergos Linux(ArchLinuxにGUIパッケージマネージャがついた派生ディストロ)
- gcc version 5.2.0
- Gitが使えること(versionは特に問わない)
- cmigemoは別途インストール
- guiltも別途インストール
香り屋版では各種のパッチを当てていますが、Mercurialではパッチ管理のサブコマンドとしてmqが使われているのに対してGitでは今のところデファクトスタンダードに相当するものがないという違いがあったりするようです。Windows版Kaoriya-Vimではguiltというコマンドを使っているようなので今回はそれに合わせてみました。
C/migemoのインストール
ローマ字で検索が可能になるC/migemoをインストールします。
ソースからコンパイルするにはGitHubのREADMEにしたがい以下のようにします。
なお、以下の説明では作業ディレクトリはすべて~/src
下とします。
% cd ~/src
% git clone git@github.com:koron/cmigemo.git
% cd cmigemo
% ./configure
% make gcc
% make gcc-dict
% make gcc-install
デフォルトでは/usr/local
以下にインストールされます。
ArchLinuxだとAURでcmigemo-gitというパッケージがあるのでそちらをインストールする方が楽かも知れません。その場合、インストール場所は/usr
下になります。
guiltのインストール
Gitでのパッチ管理コマンドであるguiltをインストールします。
guiltに関してはほとんどウェブ上での情報がありませんが、香り屋VimのGitHubリポジトリにセットアップ手順が書かれていたのでその通りにやります。
% cd ~/src
% git clone git@github.com:koron/guilt.git ./guilt
% cd guilt
% make install
これでguiltコマンドが使えるようになるはずです。
Vimと香り屋パッチのソースコードを取得
Vim本体と香り屋パッチのリポジトリをそれぞれGitHubからクローンします。
% cd ~/src
% git clone git@github.com:vim/vim.git ./vim
% git clone git@github.com:koron/vim-kaoriya-patches.git ./patches
パッチの適用
vimのリポジトリに移動し、guiltで適用するパッチの場所の設定をします。
このとき、そのままmasterブランチで作業してもいいのですが、後々バージョンを上げることを考えると使い捨てられるブランチを切っておきます。
なお、この記事を書いている時点で香り屋パッチはVim 7.4.884に公式に対応していますが、今回は欲をかいてVim本体のパッチレベルを最新の7.4.936で試みます。
% cd ~/src/vim
% git checkout -b v7-4-936
% git config guilt.patchesdir ../patches
% guilt init
guilt init
コマンドで ~/src/patches/
ディレクトリ下にVimのブランチと同じ v7-4-936
というディレクトリが生成されます。
ただしこのままでは v7-4-936/
は空のディレクトリなので、~/src/patches/master/
の中身を丸ごとコピーしてください。
vim/src
ディレクトリに移動して、guiltでパッチを当てます。
% cd ~/src/vim/src
% guilt push -a
Vimのパッチレベルが7.4.936では2011-remove-client-edge.diff のところで失敗します。
2011-remove-client-edge.diffの中身を見ると、src/gui_w32.c
を修正しています。
Vim本体のコミット履歴を見てみると、パッチ7.4.930で同じファイルのほぼ同じ箇所に修正を加えていました。
Windows向けのパッチなのでArchLinuxには関係ないですが、いずれにしても最新のVimでは2011-remove-client-edge.diffは不要なので外しておきます。
~/src/patches/v7-4-936/series
をエディタで開いて、2011-remove-client-edge.diffの行を削除しましょう。
再度、
% guilt push -a
とすると残りは幸い問題なくパッチが適用されました。guiltでパッチを適用すると、 guilt/元のブランチ名
というブランチが新たに作られます。今回の例でいうと guilt/v7-4-936
となります。
% guilt applied
でパッチが適用されているか確認できます。
cmigemoに対応したconfigureの作成
香り屋パッチを適用すると、vim/src/configure.in
にmigemoに関する設定が生成されます。しかし、vim/src/auto/configure
は自動的には更新されませんから、このまま ./configure
しても-enable-migemo オプションが有効になりません。 vim/src
に移動してから make autoconf
を実行します。
% cd ~/src/vim/src
% make autoconf
これで、vim/src/auto/configure
が更新され、中身をのぞいてmigemoで検索すると関数やヘッダファイル名でヒットするはずです。
configure、そしてmake
ここまで来たら、あとは ./configure
してコンパイルするだけです。
ただしこのとき注意しなければならないのは、上記で make autoconf
した直後は vim/src/
にいるので、1つ上の vim/
に戻ってから ./configure
する必要がある点です。
% cd ../
% ./configure
以前にUbuntuで試したときは少々違うconfigureの生成方法だったせいか、 vim/src/
ディレクトリから ./configure
してうまく行ったので、ここでハマってしまいました。
configure オプション
さて、configureするときのオプションですが、これは人によって好みがあるので僕が使った設定を紹介するに留めます。
% LIBS="-lmigemo" ./configure \
--prefix=/usr/local \
--with-features=huge \
--enable-gui=gtk2 \
--enable-multibyte \
--enable-perlinterp=dynamic \
--enable-pythoninterp=dynamic \
--enable-tclinterp \
--enable-rubyinterp=dynamic \
--enable-luainterp=dynamic \
--with-lua-prefix=/usr \
--with-luajit \
--enable-gpm \
--enable-cscope \
--enable-fontset \
--enable-migemo \
--enable-fail-if-missing
ただし、C/migemoを使うためには以下の2点だけは忘れないでください。
- ./configure の前にLIBS="-lmigemo"を指定する。
- --enable-migemo オプションを指定する。
それから、大量のオプションをコマンドラインで直打ちするのはタイプミスの恐れがあるので、上記のようなコマンドを記述したシェルスクリプトを作って実行するのがいいのではないかと思います。
make & インストール
configureして特に問題なければいよいよコンパイルしてインストールです。
% make
% sudo make install
sudoをつけるのは /usr/local
にインストールするから(書くまでもないかも知れませんが)。
パスを通す
インストール場所にあらかじめパスが通っていなければ、/usr/bin/vim
が優先されてしまうのでパスを通しましょう。
.bashrc や .zshrc に以下のように追記してターミナルを再起動するかsource .bashrc
or source .zshrc
で再読み込みさせます。
export PATH=/usr/local/bin:$PATH
+kaoriya +migemoになっていることを確認
コマンドラインで
% vim --version
とたたくか、Vimを起動してから
:version
と打ち、+kaoriya +migemo と表示されていれば無事に香り屋パッチとcmigemoは有効になっています。
お疲れ様でした。
余談
ここまで書いてきた内容ですが、実をいうと大半はArchLinux固有の話はなく、Ubuntuをはじめ他のLinuxディストリビューションにも当てはまる内容です。
もう一つ、今回はVimのソースコードと香り屋パッチを別々に取得するというやり方でしたが、下記の参考ページにもある香り屋さんのGitHubリポジトリにはそれらのソースと各種プラグインなどがが同梱された koron/vim-kaoriyaがあります。
僕のやり方がまだるっこしいと思われる方はそちらをクローンしてお試しください。