HOME > Vim RPM Package Time-stamp: "Feb 08 2003"

Vim 6.1 rpm パッケージの作成、インストール

テキストエディタ Vim に日本語入力パッチ im_custom をあてた rpm パッケージを作成します。

自動作成スクリプトの説明

Vim 6.1 + im_custom の rpmパッケージを作成するシェルスクリプトです。

vim-mkrpm.sh

2003-02-08 時点での最新、vim 6.1.320 + im_custom061 に対応しています。
RedHatLinux 7.1/7.2/7.3 で動作を確認しています。

実行すると以下のことを自動でおこないます。

  1. $HOME/rpmdir というディレクトリを作る
  2. その下に各ファイルをダウンロード (既に取得済みであればダウンロードしない)
  3. rpm パッケージを作るのに必要な SPEC ファイルを作成
  4. バイナリ rpm パッケージを作成 (パッチ当て、コンパイル、パッケージング)

実行は一般ユーザでおこないます。wget というダウンロードソフトが必要です。インストールされていない場合は、RedHatLinux の場合 RedHat のサイトから取得できます。

スクリプトの実行方法

$ ./vim-mkrpm.sh

または

$ sh vim-mkrpm.sh
ログをとるなら
$ ./vim-mkrpm.sh 2>&1 | tee vim.log

rpm パッケージのインストール

作成された 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_LASTPATCHIMCUSTOM の数値を変更してから

$ ./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 のマニュアル を参考にしました。


itouh