We All Get Old - Naskin Diary

Yet Another My Life On The Web

さくらレンタルサーバー vim セットアップメモ

ボット実行用に借りたレンタルサーバー上で用意されている vi(jvim、nvi)で UTF-8 なファイルをいじれなかったので先人達の足跡を参考にして vim-7.2 をインストール。

ログ

ソースを入手&展開

ソースは最新の7.2を入手。

% wget ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2
--2010-02-04 22:06:07--  ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2
           => `vim-7.2.tar.bz2'
ftp.vim.org をDNSに問いあわせています... 192.87.102.43, 192.87.102.42, 2001:610:1:80aa:192:87:102:42, ...
ftp.vim.org|192.87.102.43|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /pub/vim/unix ... 完了しました。
==> SIZE vim-7.2.tar.bz2 ... 7203291
==> PASV ... 完了しました。    ==> RETR vim-7.2.tar.bz2 ... 完了しました。
長さ: 7203291 (6.9M)
100%[===================================================>] 7,203,291    593K/s 時間 14s     
2010-02-04 22:06:25 (495 KB/s) - `vim-7.2.tar.bz2' へ保存終了 [7203291]

% ls
vim-7.2.tar.bz2
% tar jxf ./vim-7.2.tar.bz2 
% ls
vim-7.2.tar.bz2	vim72
パッチの入手

展開したディレクトリ vim72 の中で patches ディレクトリを作り、さらにその中でパッチを入手。


ブラウザで「ftp://ftp.vim.org/pub/vim/patches/7.2/」を覗くと「7.2.356」まであることを確認、curlのコマンドをパッチ数にあわせて直す。


パッチ100個毎に「7.2.001-100.gz」、「7.2.101-200.gz」、「7.2.201-300.gz」と纏められているようなので 001〜300まではアーカイブで入手して、301〜356を curl で入手した方が速かったかもしれない。


curl のオプション(-0)は英語の大文字O(オー)、普段使わないから「-0(ゼロ)」ってやって失敗したw

% cd vim72
% mkdir patches
% cd patches
% curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.[001-356]'

(省略)

[355/356]: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.355 --> 7.2.355
--_curl_--ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.355
102  2663  102  2663    0     0   2422      0  0:00:01  0:00:01 --:--:-- 12104

[356/356]: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.356 --> 7.2.356
--_curl_--ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.356
103  2166  103  2166    0     0   1976      0  0:00:01  0:00:01 --:--:--  1976
%
パッチ適用

vim72 のディレクトリの戻ってパッチを適用する。
patch のオプションは「-p0(ゼロ)」。ターミナル上だと紛らわしくて困る。


patch を実行すると途中で止まる。
下の例だと「src/os_vms_conf.h」にパッチを当てようとしているがファイルが無いので「File to patch:」と出てくる。
「Enter」キーを押すと「No file found--skip this patch? [n] 」と聞かれるので「y」と入力しスキップする。
「File to Patch」とでる度に vms、msdosmacos、w32 などのソース、ヘッダファイル、メイクファイルにパッチを当てようとして止まっているらしいと分かり、都度ファイルを探してみたが展開したソースの中には含まれていなかった。

% cd ..
% cat ./patches/7.2.* | patch -p0
(省略)
--------------------------
|*** ../vim-7.2.006/src/os_vms_conf.h	Thu May 10 19:26:17 2007
|--- src/os_vms_conf.h	Sat Aug 16 05:09:17 2008
--------------------------
File to patch: 
No file found--skip this patch? [n] y ← スキップを選択

Patching file src/version.c using Plan A...
Hunk #1 succeeded at 683.
Hmm...  Ignoring the trailing garbage.
done
%

configure, make, make install

がんがんメッセージが出るけどたぶん問題なし(汗

% ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=big --prefix=$HOME/local
configure: loading cache auto/config.cache
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes

(省略)

checking for setjmp.h... yes
checking for GCC 3 or later... yes
checking whether we need -D_FORTIFY_SOURCE=1... yes
configure: updating cache auto/config.cache
configure: creating auto/config.status
config.status: creating auto/config.mk
config.status: creating auto/config.h
%
% make
Starting make in the src directory.
If there are problems, cd to the src directory and run make there
cd src && make first
mkdir objects
CC="gcc -Iproto -DHAVE_CONFIG_H   -I/usr/local/include        " srcdir=. sh ./os

(省略)

objects/version.o       -lm -lncurses -liconv        
link.sh: Linked fine with a few libraries removed
cd xxd; CC="gcc" CFLAGS="-I/usr/local/include -g -O2 -D_FORTIFY_SOURCE=1"  make -f Makefile
gcc -I/usr/local/include -g -O2 -D_FORTIFY_SOURCE=1   -DUNIX -o xxd xxd.c
%
% make install
Starting make in the src directory.
If there are problems, cd to the src directory and run make there
cd src && make install
if test -f /home/naskin77/local/bin/vim; then  mv -f /home/naskin77/local/bin/vim /home/naskin77/local/bin/vim.rm;  rm -f /home/naskin77/local/bin/vim.rm;  fi

(省略)

if test -d /home/naskin77/local/share/icons/locolor/32x32/apps -a -w /home/naskin77/local/share/icons/locolor/32x32/apps  -a ! -f /home/naskin77/local/share/icons/locolor/32x32/apps/gvim.png; then  cp ../runtime/vim32x32.png /home/naskin77/local/share/icons/locolor/32x32/apps/gvim.png;  fi
if test -d /home/naskin77/local/share/icons/locolor/16x16/apps -a -w /home/naskin77/local/share/icons/locolor/16x16/apps  -a ! -f /home/naskin77/local/share/icons/locolor/16x16/apps/gvim.png; then  cp ../runtime/vim16x16.png /home/naskin77/local/share/icons/locolor/16x16/apps/gvim.png;  fi
%
インストールされたことを確認
%ls -ltr ~/local/bin
total 1426
-rwxr-xr-x  1 naskin77  users     2084  2  4 22:59 vimtutor
-rwxr-xr-x  1 naskin77  users  1414716  2  4 22:59 vim
-rwxr-xr-x  1 naskin77  users    14284  2  4 22:59 xxd
lrwxr-xr-x  1 naskin77  users        3  2  4 22:59 vimdiff -> vim
lrwxr-xr-x  1 naskin77  users        3  2  4 22:59 view -> vim
lrwxr-xr-x  1 naskin77  users        3  2  4 22:59 rvim -> vim
lrwxr-xr-x  1 naskin77  users        3  2  4 22:59 rview -> vim
lrwxr-xr-x  1 naskin77  users        3  2  4 22:59 ex -> vim
環境設定

vim の設定ファイルにエンコーディングの指定とタブストップの変更。
デフォルトのスペース8個って長すぎませんか?

%cat ~/.vimrc
set encoding=utf8
set tabstop=4


$PATH、$LANG などの設定。
コマンドパスはシステム側でインストール済みの vi とか jvim を先に探すとめんどくさいので、「${HOME}/local/bin」から探すように変更。

%cat ~/.cshrc
(省略)
alias vi	 	vim

set path = (${HOME}/local/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)

setenv  LC_CTYPE        ja_JP.UTF-8
setenv  LANG    ja_JP.UTF-8

雑感

久しぶりのFreeBSD & Cシェルなどに戸惑った。
ソース入手からパッチ当ての作業を考えると ports のパッケージ管理システムは偉大だな〜。
(パッチの当て方とかコンパイルに接する機会がなくなるという弊害もあるけど、管理を楽にするのと仕組みを理解するのは別の話だからな)