CentOS5にvim7.3をrpmでインストールする方法

 2012/01/09

vim使いとしては、CentOS5系でのvimのバージョンが7.0系というのは辛い。

昨年末にアジャイルのコーチをしているチームから同じことを相談されてvim7.3系のrpmを作成したので以下にその手順をまとめておく。

*2012/6/8 autoconfのmake checkが落ちる場合の対応手順を追加。パッケージのDL先等を修正

おおまかな流れ

  • ビルドに必要なパッケージを準備
  • m4の更新
  • autoconfの更新
  • vimのビルド

事前準備

これから、他のOSのsrpmファイルを利用して、rpmをビルドしていくので、環境を用意する。

yum install gcc automake rpm-build
mkdir /usr/src/redhat

その他のパッケージは適宜取得することにする。

m4の更新

デフォルトで導入されているm4のバージョンは1.4.5だと思うが、これを最新の1.4.16に更新する(autoconfが要求)。 導入に際してはFedoraのsrpmをビルドする。

wget ftp://rpmfind.net/linux/fedora/linux/development/rawhide/source/SRPMS/m/m4-1.4.16-4.fc18.src.rpm
rpm -Uvh --nomd5 m4-1.4.16-4.fc18.src.rpm

これからビルドを行うが、m4のビルドの際に、specファイル中に記述されているtarballがtar.xzになっているので、/usr/src/redhat/SOURCES/にhttp://ftp.gnu.org/gnu/m4/から同一バージョンのtar.gzファイルを取得する。

wget http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.gz
wget http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.gz.sig
mv m4-1.4.16.tar.gz* /usr/src/redhat/SOURCES/

あわせてspecファイルの編集を行う。ファイル名は/usr/src/redhat/SPECS/m4.specだ。

Source0: http://ftp.gnu.org/gnu/m4/m4-%{version}.tar.xz
Source1: http://ftp.gnu.org/gnu/m4/m4-%{version}.tar.xz.sig

から

Source0: http://ftp.gnu.org/gnu/m4/m4-%{version}.tar.gz
Source1: http://ftp.gnu.org/gnu/m4/m4-%{version}.tar.gz.sig

へ変更する。

以上が終わったらビルドする

rpmbuild -ba /usr/src/redhat/SPECS/m4.spec

以下のように出力されるはずだ(末尾のみ抜粋)

伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/m4-1.4.16-2-root-root
書き込み完了: /usr/src/redhat/SRPMS/m4-1.4.16-2.src.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/m4-1.4.16-2.i386.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.48007
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd m4-1.4.16
+ rm -rf /var/tmp/m4-1.4.16-2-root-root
+ exit 0

のようにrpmが作成されればOKだ。できあがったrpmをインストールする。

rpm -Uvh /usr/src/redhat/RPMS/i386/m4-1.4.16-2.i386.rpm 

autoconfの更新

次にautoconfを最新にする。導入済のバージョンはautoconf-2.59-12だが、これではvim7.3のビルドができないため、最新の2.68に更新する。手順はm4の更新とほぼ同じだ。

wget ftp://rpmfind.net/linux/sourceforge/f/fu/fuduntu/yum/2012/STABLE/SRPMS/autoconf-2.68-2.fc15.src.rpm
rpm -Uvh --nomd5 autoconf-2.68-2.fc15.src.rpm 

同様にtarballを入れ替え、specファイル(/usr/src/redhat/SPECS/autoconf.spec)を書き換える

Source:     http://ftpmirror.gnu.org/autoconf/autoconf-%{version}.tar.xz

から

Source:     http://ftpmirror.gnu.org/autoconf/autoconf-%{version}.tar.gz

また、perl-develを無効にするために、18行目から3行をコメントアウトする。

#BuildRequires:      perl-devel
#Requires(post):     /sbin/install-info
#Requires(preun):    /sbin/install-info

また同様にtarballを入れかえる。

wget http://ftpmirror.gnu.org/autoconf/autoconf-2.68.tar.gz
mv autoconf-2.68.tar.gz /usr/src/redhat/SOURCES/

以上が終わったらビルドする

rpmbuild -ba /usr/src/redhat/SPECS/autoconf.spec 
エラー: ビルド依存性の失敗:
        emacs は autoconf-2.68-2.noarch に必要とされています
        libtool は autoconf-2.68-2.noarch に必要とされています
        gcc-gfortran は autoconf-2.68-2.noarch に必要とされています

vimをインストールする準備のためにemacsが必要とかいう感じなので、上の3つのパッケージを導入する

yum install emacs libtool gcc-gfortran

以上ができたら再度ビルドする。

rpmbuild -ba /usr/src/redhat/SPECS/autoconf.spec 

ビルドが開始される。500個近くのテストケースが実行されるため完了までに時間がかかる。

伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/autoconf-2.68-2-root-root
書き込み完了: /usr/src/redhat/SRPMS/autoconf-2.68-2.src.rpm
書き込み完了: /usr/src/redhat/RPMS/noarch/autoconf-2.68-2.noarch.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.58486
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd autoconf-2.68
+ rm -rf /var/tmp/autoconf-2.68-2-root-root
+ exit 0

以上でビルドが完了した。できあがったrpmをインストールする。

rpm -Uvh /usr/src/redhat/RPMS/noarch/autoconf-2.68-2.noarch.rpm 

これでやっと準備が完了した。

なお、この段階で、autoconfのtestに失敗する場合は、邪道だが、make checkを走らせないようにして逃げても良い。 その場合は、rpmbuildコマンドの引数に–without checkを追加する。

rpmbuild --without check -ba /usr/src/redhat/SPECS/autoconf.spec 

vimの更新

ここまでくればあと少しだ。手順はm4やautoconfとほぼ同じである。 まずは、srpmを取得しインストールする。

wget ftp://rpmfind.net/linux/fedora/linux/development/rawhide/source/SRPMS/vim-7.3.322-1.fc17.src.rpm
rpm -Uvh --nomd5 vim-7.3.322-1.fc17.src.rpm 

ためしにビルドしてみよう(失敗する)

rpmbuild -ba /usr/src/redhat/SPECS/vim.spec 
エラー: ビルド依存性の失敗:
        python-devel は vim-7.3.322-1.i386 に必要とされています
        ncurses-devel は vim-7.3.322-1.i386 に必要とされています
        perl-devel は vim-7.3.322-1.i386 に必要とされています
        libacl-devel は vim-7.3.322-1.i386 に必要とされています
        gpm-devel は vim-7.3.322-1.i386 に必要とされています
        autoconf は vim-7.3.322-1.i386 に必要とされています
        libselinux-devel は vim-7.3.322-1.i386 に必要とされています
        ruby-devel は vim-7.3.322-1.i386 に必要とされています
        ruby は vim-7.3.322-1.i386 に必要とされています
        gtk2-devel は vim-7.3.322-1.i386 に必要とされています
        libSM-devel は vim-7.3.322-1.i386 に必要とされています
        libXt-devel は vim-7.3.322-1.i386 に必要とされています
        libXpm-devel は vim-7.3.322-1.i386 に必要とされています

パッケージが不足していることがわかる。perl-devel以外は全てパッケージが用意されているので、以下のコマンドでインストールする。

yum install python-devel ncurses-devel libacl-devel gpm-devel autoconf libselinux-devel ruby-devel ruby gtk2-devel libSM-devel libXt-devel libXpm-devel

次にspecファイルの編集をしよう。ファイルは/usr/src/redhat/SPECS/vim.specだ。 行うべき作業としては、さきほどインストールしなかったperl-develパッケージの依存性を除外することだ。ファイルを開き、perl-develの記述がある箇所を削除すればよい。

これで準備が整ったので、vimをビルドしよう。

rpmbuild -ba /usr/src/redhat/SPECS/vim.spec 

いままでの作業を順に行っていれば、以下のように表示されるはずだ。

伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/vim-7.3.322-1-root-root
書き込み完了: /usr/src/redhat/SRPMS/vim-7.3.322-1.src.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/vim-common-7.3.322-1.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/vim-minimal-7.3.322-1.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/vim-enhanced-7.3.322-1.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/vim-filesystem-7.3.322-1.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/vim-X11-7.3.322-1.i386.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.16828
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd vim73
+ rm -rf /var/tmp/vim-7.3.322-1-root-root
+ exit 0

これでrpmファイルができた! あとはrpmファイルを適用すればよい。

cd /usr/src/redhat/RPMS/i386
rpm -Uvh vim*.rpm

とすれば、インストールが完了だ! 起動すればvimのバージョンが最新になっていることが確認できるだろう。

 2012/01/09

著作

寄稿

Latest post: