CentOS 5.7にnamazu-2.0.21を導入
CentOSで動かしているサーバーにNamazuの全文検索を導入したときの手順
パッケージ管理はyumで行っているのでrpmパッケージを作成してからインストールしたいが、CentOS用のrpmパッケージが見当たらないのでFedoraからsrpmをもらってきてrpmパッケージをビルドする。
rpmbuildの作業ディレクトリを設定
作業ディレクトリを作る。何でもいいが、ホームディレクトリにrpmという名前で作ることにする。
$ mkdir ~/rpm $ cd ~/rpm $ mkdir BUILD SOURCES SPECS SRPMS RPMS $ pwd /home/yuyakko/rpm
pwdで絶対パスを確認したらそれを ~/.rpmmacros に記入。
%_topdir /home/yuyakko/rpm
署名の用意
yumでインストールするには署名をつけないといけないらしいので、その設定をする。
rpmコマンドでインストールするのなら不要。
まず鍵を作成。
$ gpg --gen-key
設定はデフォルトで。
ご希望の鍵の種類を選択してください: (1) DSAとElgamal (既定) (2) DSA (署名のみ) (5) RSA (署名のみ) 選択は? DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 要求された鍵長は2048ビット 鍵の有効期限を指定してください。 0 = 鍵は無期限= 鍵は n 日間で満了 w = 鍵は n 週間で満了 m = 鍵は n か月間で満了 y = 鍵は n 年間で満了 鍵の有効期間は? (0) Key does not expire at all これで正しいですか? (y/N) y
名前とかは適当に。
あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: "Heinrich Heine (Der Dichter)" 本名: yuyakko 電子メール・アドレス: コメント: 次のユーザーIDを選択しました: “yuyakko”
パスフレーズを省略すると
パスフレーズが不必要なようですが、おそらくそれはろくでもない 考えです! いちおう続行します。パスフレーズは、このプログラム の“--edit-key”オプションでいつでも変更できます。
などと罵られるので一応設定しておく。
途中でエントロピーが足りなくなった。
十分な長さの乱数が得られません。OSがもっと乱雑さを収集 できるよう、何かしてください! (あと283バイトいります)
よくあること。こういう時は別のSSHセッションから find / などでエントロピー(乱雑さ)を稼ぐ。
鍵が作成できたらrpmbuildでパッケージ作成時にその鍵を使えるように設定する。
man rpm によると
例えば、実行ファイルが /usr/bin/gpg で、鍵リングが /etc/rpm/.gpg にあり、その中のユーザ "John Doe
" としてパッケージに GPGを使って署名する場合には
%_signature gpg
%_gpg_path /etc/rpm/.gpg
%_gpg_name John Doe
%_gpgbin /usr/bin/gpg
をマクロの設定ファイルに含めれば良い。システム全体の設定には /etc/rpm/macros を、ユーザごとの設定には ~/.rpmmacros を使用する。
ということなので ~/.rpmmacros に設定を追記する。
%_signature gpg %_gpg_name yuyakko
キーリングのパスとgpgコマンドのパスは標準でいいので省略。
%_gpg_name には鍵の作成時に出てきたuidを設定。忘れたら gpg -K コマンドで表示。
以上でrpmパッケージ作成時に署名できるようになった。
次にその署名が信用できるということをrpmコマンドに教える。
$ gpg -a --export yuyakko > RPM-GPG-KEY.yuyakko.txt $ sudo rpm --import RPM-GPG-KEY.yuyakko.txt
gpgの--exportオプションで公開鍵を取り出し、それをrpmの--importオプションでrpmのデータベースに追加する。
これでyumがrpmに署名の確認をさせた時にOKとなる。
srpmの取得
なんとなくCentOSに似てそうなFedoraのパッケージデータベースに欲しいsrpmがあるのでそこからもらってくる。
srpmが必要なパッケージ
kakasiは使わないが、namazuのパッケージがkakasiのパッケージに依存しているので一応入れておく。
ここから検索してダウンロード。
https://admin.fedoraproject.org/pkgdb/
- パッケージ名を入力
- PACKAGESを押して検索
- 欲しいパッケージを選択
- Build Status
- Buildsの中から適当な物を選ぶ
- RPMsにあるsrcをダウンロード
$ cd ~/rpm $ wget http://kojipkgs.fedoraproject.org/packages/namazu/2.0.19/5.fc15/src/namazu-2.0.19-5.fc15.src.rpm $ wget http://kojipkgs.fedoraproject.org/packages/mecab/0.98/1.fc15/src/mecab-0.98-1.fc15.src.rpm $ wget http://kojipkgs.fedoraproject.org/packages/mecab-ipadic/2.7.0.20070801/4.fc15.1/src/mecab-ipadic-2.7.0.20070801-4.fc15.1.src.rpm $ wget http://kojipkgs.fedoraproject.org/packages/kakasi/2.3.4/30.fc15/src/kakasi-2.3.4-30.fc15.src.rpm $ wget http://kojipkgs.fedoraproject.org/packages/perl-Text-Kakasi/2.04/15.fc15/src/perl-Text-Kakasi-2.04-15.fc15.src.rpm
Namazuは2.0.19までしかなかったのでそれを取得しておいた。
MeCabのインストール
まずソースを展開。
$ rpm -i --nomd5 mecab-0.98-1.fc15.src.rpm
--nomd5を指定しないとチェックサムが適合しないというエラーになる。CentOSに入っているrpmコマンドがsha256をサポートしていないのが原因らしい。仕方ないのでチェックサムの検査を行わないように指定している。
Namazuから使うならeucだけでいいけど、もし他の用途で使うことになったらたぶんUTF-8で使いたくなるのでUTF-8もサポートするように変えておく。SPECS/mecab.specを開いて編集。
%configure ↓ %configure --with-charset=utf8
ビルドしてインストールする。
$ rpmbuild -ba --sign SPECS/mecab.spec $ sudo yum install RPMS/x86_64/mecab-0.98-1.x86_64.rpm $ sudo yum install RPMS/x86_64/mecab-devel-0.98-1.x86_64.rpm
辞書も同じように展開・ビルド・インストールする。
$ rpm -i --nomd5 mecab-ipadic-2.7.0.20070801-4.fc15.1.src.rpm $ rpmbuild -ba --sign SPECS/mecab-ipadic.spec $ sudo yum install RPMS/x86_64/mecab-ipadic-2.7.0.20070801-4.1.x86_64.rpm $ sudo yum install RPMS/x86_64/mecab-ipadic-EUCJP-2.7.0.20070801-4.1.x86_64.rpm
Kakasiのインストール
$ rpm -i --nomd5 kakasi-2.3.4-30.fc15.src.rpm $ rpmbuild -ba --sign SPECS/kakasi.spec $ sudo yum install RPMS/x86_64/kakasi-2.3.4-30.x86_64.rpm $ sudo yum install RPMS/x86_64/kakasi-libs-2.3.4-30.x86_64.rpm $ sudo yum install RPMS/x86_64/kakasi-devel-2.3.4-30.x86_64.rpm $ sudo yum install RPMS/x86_64/kakasi-dict-2.3.4-30.x86_64.rpm $ rpm -i --nomd5 perl-Text-Kakasi-2.04-15.fc15.src.rpm $ rpmbuild -ba --sign SPECS/perl-Text-Kakasi.spec $ sudo yum install RPMS/x86_64/perl-Text-Kakasi-2.04-15.x86_64.rpm
Namazuのインストール
srpmを展開する。
$ rpm -i --nomd5 namazu-2.0.19-5.fc15.src.rpm
最新の2.0.21を入れたいのでソースコードを取得してきて入れ替え。
$ wget http://www.namazu.org/stable/namazu-2.0.21.tar.gz $ cp namazu-2.0.21.tar.gz SOURCES/ $ rm SOURCES/namazu-2.0.19.tar.gz
それに合わせて SPECS/namazu.spec も変更。
Version: 2.0.19 Release: 5%{?dist} ↓ Version: 2.0.21 Release: 1%{?dist}
このソースからのパッケージ作成は1回目なのでReleaseは5から1に変更しておく。実際にリリースするわけではなく、自分で使うだけなので他の適当な数字でもいい。
他と同じようにビルド・インストールする。
$ rpmbuild -ba --sign SPECS/namazu.spec $ sudo yum install RPMS/x86_64/namazu-libs-2.0.21-1.x86_64.rpm $ sudo yum install RPMS/x86_64/namazu-2.0.21-1.x86_64.rpm $ sudo yum install RPMS/x86_64/namazu-devel-2.0.21-1.x86_64.rpm $ sudo yum install RPMS/x86_64/namazu-cgi-2.0.21-1.x86_64.rpm
できた。