Perl Perl_4 memo vi other
[memo] vim をソースからインストールする (0x21f)
![[memo] vim をソースからインストールする (0x21f) [memo] vim をソースからインストールする (0x21f)](http://img04.ti-da.net/usr/p/o/i/pointoht/20150424perl.png)
目次 - Perl Index
Theme
Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x21f 回。
Perl のビット演算子で「 ビットストリング 」を確認する予定を変更して、テキストエディタ「 vim 」をソースからインストールする手順をメモします。
以前の「 vim 7.2 」は、スムーズにソースからインストール出来たのですが、今回は怒涛のパッチエラーが発生したため、* 最終的には「 Mercurial 」を利用してインストール * しました。
環境は「 FreeBSD 9.1-RELEASE 」で、管理者権限のない一般ユーザでのインストールになります。
ディレクトリ作成
管理者権限のない一般ユーザを利用する共有レンタルサーバで、テキストエディタ「 vim 」をインストールするために、まずはディレクトリを作成します。
ディレクトリは、ソースを格納するディレクトリ「 src/ 」と、インストール後のバイナリファイルが設置される予定のディレクトリ「 bin/ 」を、ホームディレクトリの「 local/ 」直下に作成します。
mkdir -p $HOME/local/src
mkdir $HOME/local/bin
パスを通す
インストール後のバイナリファイルを直接実行出来るように「 パスを通す 」作業を行います。
パスを通す方法はいくつかありますが、シェル「 tcsh 」を使っている僕は、ファイル「 .cshrc 」を編集して「 set path 」に「 $HOME/local/bin 」を追加します。
まず、どんなサーバでも利用出来る可能性が高いテキストエディタ「 vi 」で、「 .cshrc 」を開きます。
vi .cshrc
それから、「 .cshrc 」内で「 set path 」の行を見つけて「 $HOME/local/bin 」を追加します。パスのリストは空白区切りです。
set path = (/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin $HOME/local/bin )
編集が完了したらファイルを保存し、シェル上で「 source .cshrc 」を実行します。こうすることで、編集した内容をすぐに反映出来ます。
source .cshrc
それから、コマンド「 echo $PATH 」を実行して、「 $HOME/local/bin 」が出力されればパスの設定は完了です。
echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/your/dir/local/bin
ソースを取得
「 ftp://ftp.vim.org/pub/vim/unix/ 」から「 vim 7.4 」のソースを取得します。が、最終的には「 Mercurial 」を利用してインストールすることになるのであしからず。
cd $HOME/local/src
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
コマンド「 tar 」でソースを展開します。
tar jxvf vim-7.4.tar.bz2
パッチを取得
作成されたディレクトリ「 vim74 」に移動して、パッチファイル用のディレクトリを作成します。
cd vim74
mkdir patches
ディレクトリ「 patches 」に移動します。
cd patches
コマンド「 curl 」で「 ftp://ftp.vim.org/pub/vim/patches/ 」からパッチを取得します。
コマンド「 wget 」ではなく「 curl 」を使うのは複数 ( 2015/07 時点で 769 個 ) あるパッチファイルをまとめて簡単に取得するためだと理解しています。
curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.[001-769]'
パッチを適用
コマンド「 patch 」を利用してパッチを適用します。
まず、ディレクトリ「 patches 」から「 vim74 」に戻ります。
cd ..
コマンド「 cat 」でディレクトリ「 patches 」配下をすべて出力してコマンド「 patch 」に渡します。オプション「 -p0 」については patchコマンド-pオプションの覚え書き - ザリガニが見ていた...。を参照します。
cat patches/7.4.* | patch -p0
パッチの適用でエラー
パッチを適用する際に次のエラー ( ? ) で処理が停止しました。
|*** ../vim-7.4.063/src/testdir/test39.ok 2013-03-07 18:28:51.000000000 +0100
|--- src/testdir/test39.ok 2013-11-04 01:37:12.000000000 +0100
--------------------------
Patching file src/testdir/test39.ok using Plan A...
patch: **** duplicate "---" at line 7496--check line numbers at line 7479
どうやらパッチファイル「 7.4.064 」で止まっているようです。
個別に「 7.4.064 」のパッチを適用すると、問題になっている行番号が分かりやすくなります。
メッセージを元にパッチファイル「 7.4.064 」を確認すると、150 行目に文字化けした文字を発見しました。
コマンド「 nkf -g 」でファイルの文字コードを確認すると「 Shift_JIS 」となっています。
インターネットで検索しつつ、問題になっていそうな文字を修正する等パッチの適用を進め、「 7.4.064 」の問題は解消した様に見えましたが、次から次へと迫りくる怒涛のパッチエラーを前にして名誉の撤退を決めました。
Mercurial でインストールへ
「 Mercurial 」( マーキュリアル ) は「 Git 」( ギット ) の様な「 分散型バージョン管理システム 」です。
細かい話はまだ理解していませんが、この「 Mercurial 」を利用すれば「 vim 」を簡単にインストールすることが出来ます。
「 Mercurial 」を利用した「 vim 」のインストール方法は次回でまとめます。
以下では、パッチの適用が問題なく完了した場合の手順をメモしておきます。
configure
パッチの適用が問題なく完了したら、インストール前の設定「 configure 」を行います。
「 configure 」の実行は、ディレクトリ「 vim74 」の中で行います。
./configure --prefix=$HOME/local/ --enable-multibyte --with-features=huge --without-x --disable-gui
「 -- 」で始まる各オプションの詳細は理解していませんが、大まかに次のように理解しています。
--prefix
これは、インストール先のディレクトリを指定します。管理者権限がない場合、デフォルトの「 /usr/local 」等に書き込みを行う際にパーミッションエラーが発生するので、予め自分のホームディレクトリに作成しておいたディレクトリ「 $HOME/local 」等を指定します。
--enable-multibyte
これは、マルチバイトエンコーディングに対応するためのものです。日本語環境では設定しておいた方が良いかと思っています。
--with-features=huge
これは、インストールする「 vim 」の機能を指定します。「 tiny 」, 「 small 」, 「 normal 」, 「 big 」, 「 huge 」の順に利用可能な機能が ( その分サイズも ) 多くなります。
これについては Vim の種類 (Vim family) - Qiita が詳しそうです。
--without-x
UNIX 系システムでグラフィックユーザインターフェース ( GUI ) を提供する「 X 」( ウィンドウマネージャ ) に対する設定を除外するオプションです。
GUI を利用しない場合でも、これを除外しなければ「 X 」の一部機能 ( クリップボード等 ) が利用出来るそうです。
--disable-gui
これも GUI 環境での利用を除外する際に必要なオプションです。
コマンドラインインタフェース ( CUI ) での利用のみの場合はこのオプションを利用した方が良いと思われます。
この他にも、Perl 拡張を利用する「 --enable-perlinterp 」 等様々なオプションが存在します。
make install
「 configure 」が完了したら、最後に「 make install 」を実行してインストールが完了します。
make install
0x21f -> 0x220 へ
次回は、「 Mercurial 」を利用した「 vim 」のインストール方法をメモします。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)