| HOME > Vim RPM Package | Time-stamp: "Feb 08 2003" |
テキストエディタ Vim に日本語入力パッチ im_custom をあてた rpm パッケージを作成します。
Vim 6.1 + im_custom の rpmパッケージを作成するシェルスクリプトです。
2003-02-08 時点での最新、vim 6.1.320 + im_custom061 に対応しています。
RedHatLinux 7.1/7.2/7.3 で動作を確認しています。
実行すると以下のことを自動でおこないます。
$HOME/rpmdir というディレクトリを作る
実行は一般ユーザでおこないます。wget というダウンロードソフトが必要です。インストールされていない場合は、RedHatLinux の場合 RedHat のサイトから取得できます。
$ ./vim-mkrpm.sh
または
$ sh vim-mkrpm.sh
$ ./vim-mkrpm.sh 2>&1 | tee vim.log
作成された rpm パッケージは、$HOME/rpmdir/RPMS の下にあります。
rpm 作成までは、一般ユーザで可能です。 作成した rpm パッケージをインストールするときにはスーパーユーザになりましょう。
$ su # rpm -Uvh rpmdir/RPMS/i386/vim-6.1.320_im061-1.i386.rpm
というふうにすればインストールできます。
ただし、RedHatLinux 7.x にインストールするとき、普通は 「依存性の欠如」とかいうエラーがでます。
error: failed dependencies:
vim-common conflicts with vim-6.1.320_im061-1
RedHatLinux を標準的にインストールすると、vim も既にインストールされています。インストールされているパッケージ名を知るには、
$ rpm -qa | grep vim
とすると分かります。RedHatLinux 7.1 では、vim-minimal, vim-common が入っていました。RedHatLinux 7.3 はそれに加えて vim-enhanced も入っていました。
今つくった vimパッケージは、RedHat が作った vim-common と競合するように指定してあるので、エラーが出るのは正しい動作です。 解決策は、vim-common のほうを削除すればよいです (rpm パッケージなので、削除したものをインストールしなおすのも簡単ですから、気軽に削除できます)。 ただし、以下のようにすると、
# rpm -e vim-common
error: removing these packages would break dependencies:
vim-common is needed by vim-minimal-6.0-0.27
vim-common を消したいなら vim-minimal も削除しろ、と言ってきました。
vim-minimal が含むパッケージを調べてみると、
$ rpm -qlv vim-minimal
lrwxrwxrwx 1 root root 2 Apr 2 2001 /bin/ex -> vi
lrwxrwxrwx 1 root root 2 Apr 2 2001 /bin/rvi -> vi
lrwxrwxrwx 1 root root 2 Apr 2 2001 /bin/rview -> vi
-rwxr-xr-x 1 root root 377404 Apr 2 2001 /bin/vi
lrwxrwxrwx 1 root root 2 Apr 2 2001 /bin/view -> vi
$ file /bin/vi
/bin/vi: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked
(uses shared libs), stripped
$ ldd /bin/vi
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40022000)
libdl.so.2 => /lib/libdl.so.2 (0x40026000)
libc.so.6 => /lib/libc.so.6 (0x4002a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
$ rpm -qf /lib/libtermcap.so.2 /lib/libdl.so.2 /lib/libc.so.6
/lib/ld-linux.so.2
ファイル /lib/libtermcap.so.2 はどのパッケージにも属していません
glibc-2.2.4-31
glibc-2.2.4-31
glibc-2.2.4-31
となっています (RedHatLinux7.1 の場合)。vim-minimal は、vim-common とは (ライブラリとかの) 直接的な関連は無いようです。
ですので vim-minimal を削除しないまま、vim-common を強制的に削除することもできます (vim-enhanced があればそれも削除します)。
# rpm -e --nodeps vim-common
このあと、先ほど作成したパッケージをインストールすればよいです。しかし、これは あまりお勧めしません。
ここでは、vim-minimal も削除します。vim-enhanced が入っていればそれも削除します。
# rpm -e vim-common vim-minimal vim-enhanced
そして、今作った vim のパッケージをインストールします。
ところで、先ほど vim-minimal を削除したため /bin/vi が無くなってしまいました。
今作ったパッケージには vi という名前のコマンドが入っていないので、シンボリックリンクを作成しておきます。
# rpm -Uvh rpmdir/RPMS/i386/vim-6.1.320_im061-1.i386.rpm # ln -s /usr/bin/vim /bin/vi
これでインストールは終わりです。
ちなみに rpm パッケージに入っているファイルをインストール前に知りたい場合は、以下のようにします。
$ rpm -qlp rpmdir/RPMS/i386/vim-6.1.320_im061-1.i386.rpm
あと、/bin/vi ですが Vim6.1 + im_custom では
後述のとおり日本語入力が最初から on になっているようなので、設定ファイルを書き換えるには向いていない感じです。nvi や オリジナル vi を入れておくほうがいいかもしれません。
vim のコンパイルに関しては、mattnさんのページを参考にしました。
vim パッチを
$ wget ftp://ftp.vim.org/pub/vim/patches/6.1.*
と指定してダウンロードするやりかたは proxy 環境では無理だったので、スクリプトの中では 1 ファイルずつ取得しています。
Vim に関する新規パッチが出た場合、スクリプト最初にある VIM_LASTPATCH や IMCUSTOM の数値を変更してから
$ ./vim-mkrpm.sh
を実行すれば最新版の rpm パッケージが作成できるはずです。以前インストールした Vim+im_custom rpm パッケージを削除しなくても、
# rpm -Uvh <新rpmパッケージ>
すればアップデートできます。
日本語を使用するためには、$HOME/.vimrc というファイルを作り、以下のように書き込みます。私は日本語入力に POBox を使用するので、そのように im_custom を設定しています
set encoding=japan
if has('iconv')
set fileencodings+=iso-2022-jp
set fileencodings+=utf-8,ucs-2
if &encoding ==# 'euc-jp'
set fileencodings+=cp932
else
set fileencodings+=euc-jp
endif
endif
set imoptions=pobox,serv:localhost
vim を起動して i で挿入モードにしたとき、いきなり pobox が有効になっています。Ctrl-\ で POBox の ON/OFF ができます。
Emacs + pobox-el とは使い勝手がちがうな... しばらく使いこんでみます。
設定については Vimの使い方 と im_custom のマニュアル を参考にしました。