DiKicker を使って社内 Blog を始めてから早いものでもう半月ほど経ち、記事もそれなりにたまってきた。
DiKicker にはキーワードによる串刺し表示機能があるものの、検索機能は自前で持っていないため任意の文字列で検索をすることができない。 これだと過去記事が活用されなくなってしまう。
ということでそろそろ検索エンジンをセットアップすることにした。
同じサーバで Namazu をインストールして過去メールの検索に使用しているが、今回は Hyper Estraier を使ってみることにした。
が選択理由。 今回は自分の社内 Blog だけでなく、自分の立てている Wiki (WiKicker) や他人が立てている PukiWiki、静的な HTML ページなどもまとめて検索できるようにしたいという考えがある。 このため複数のサーバに分散したコンテンツを、クローラでインデックス生成できるというのは魅力的である。
P2P連携機能の方は技術的に面白そうということで。
まずは自分のノート PC 上にセットアップして、いろいろ試してみることにする。 さっそく apt-get で Hyper Estraier をパッケージインストール。
estmaster でノードマスタを起動し、ユーザ設定とノード作成を行う。
で次に Web クローラ estwaver の設定をして、ノート PC ローカルの Web サーバのコンテンツをインデックス化してみる。
で、検索。
あれ?
検索結果件数が 0。よくみるとインデックスされている文書が 0 だ。 確かに estwaver がモリモリ fetch して登録しているようなのだが……。
しこたま悩んだ末、Debian パッケージの Hyper Estraier は 1.2.5 でこのバージョンの estmaster は ノードサーバへの登録機能がまだないということにようやく気がついた。
とほほ。
ということなので、Hyper Estraier 1.2.7 をソースからインストールすることにした。 Debian パッケージの QDBM だと古いので、こちらもあわせてインストール。
今回はパッケージ化せずに /usr/local/hyperestraier-1.2.7 に、とりまとめてインストールすることにしておく。
wget http://qdbm.sourceforge.net/qdbm-1.8.58.tar.gz tar zxvf qdbm-1.8.58.tar.gz cd qdbm-1.8.58 ./configure --enable-zlib --prefix=/usr/local/hyperestraier-1.2.7 make make check make install
wget http://hyperestraier.sourceforge.net/hyperestraier-1.2.7.tar.gz tar zxvf hyperestraier-1.2.7.tar.gz cd hyperestraier-1.2.7 PKG_CONFIG_PATH=/usr/local/hyperestraier-1.2.7/lib/pkgconfig ./configure --prefix=/usr/local/hyperestraier-1.2.7 make make check make install
インストール完了。
最初インストールしたものを実行すると落ちて何だろうと思っていた。 これについては deb パッケージでインストールした関連パッケージを purge してビルドし直しインストールしたら問題なく動くようになった。
メデタシメデタシ。
明日は会社のサーバでも設定しよう。
昨日の自分のノート PC で Hyper Estraier の試用を踏まえて、社内のサーバに Hyper Estraier を設置する。
いまだ Red Hat Linux 8.0 であるサーバに、昨日と同様に Hyper Estraier 1.2.7 を /usr/local/hyperestraier-1.2.7 以下にインストール。
この環境では ./configure 時に iconv が見つからないため、最初に libiconv 1.9.2 を /usr/local/hyperestraier-1.2.7 に入れ、続けて QDBM、Hyper Estraier の順にインストール。
estwaver + estmaster でクローリング + 文書登録も問題なく完了。
で検索をしようと http://ホスト:1978/node/ノード名/search_ui にアクセスするも、検索フォームを含め何も表示されない。あれ? 他の管理ページは問題なく表示されるのに search_ui だけ駄目。
GNU Wget だときちんと HTML を GET できるのだけれど、Firefox や Internet Explorer からだと駄目である。
いろいろビルドしなおしてみたけれどやっぱり駄目なので、今回は結局 estmaster をやめて CGI プログラム版の UI を使うことにした。 こちらだとクローリング中は検索ができなくなってしまうけれど、夜中に cron で回すから別にかまわないか。
以下のような感じでクロールし、登録することにした。
特定の Wiki や Blog 内のみを検索したい時は、検索インタフェースの方で URL を指定絞り込めば良いので、それほど規模も大きくないし全部ひとまとめにインデックス化することにした。
後は使いながら微調整していくこととしよう。
朝から ThinkPad X31 の HDD 新しく入れ替えて Debian GNU/Linux sid のインストールを開始。
今日は sarge のネットワークインストール CD イメージからブートしてインストール。 今回はブートドライブにできる「ThinkPad USB ポータブルCD-ROMドライブ」があり、またこのイメージで起動して e1000 が認識できるので楽勝である。
(第1回目は USB FDD + PC カード NIC でインストール、第2回目 は HDD 上のインストーラから GRUB からの起動によるインストールだった)
ヤバイ状態の旧 HDD を USB 外付け HDD ケースに詰めて
を新しい HDD にコピー。
次に環境の復旧。 以下備忘録。
以前作った Linux kernel 2.6.15 deb パッケージをインストールした後 module-assistant で madwifi をインストールするも、ビルドした GCC のバージョンが違ってロードできず。 kernel は GCC 4.0 の時にビルドしたもので、madwifi は現在のバージョンである GCC 4.1 によるビルドであることが問題。
まずは前にビルドした 2.6.15 のソースディレクトリでカーネルパッケージを GCC 4.1 で作りなおしてインストールし、あらためて module-assistant。
module-assistant prepare module-assistant auto-install madwifi
で /etc/network/interfaces を書き戻す。
ここずっと使っていた qmail をこの機会にやめることにした。 Postfix へ。
全体の設定はインストーラに従って設定。
個人設定は、
~/.qmail に
| preline /usr/bin/procmail
として procmail を使っていたので、~/.forward を作って同様に procmail に流すようにする。
"|IFS='' && exec /usr/bin/procmail -f- || exit 75 #naney"
~/.procmailrc は以前のまま。ClamAV と bsfilter でふるいにかけた後、Maildir へ。
以前入れた時は deb が古かったので /usr/local に自前でインストールした。 まずはこれを古い HDD から戻して動作確認後 deb のものに切り替え。
.mew.el の中も
(load "/usr/share/doc/bsfilter/examples/mua/mew4/mew.el")
に変更。
/etc/samba/smb.conf を書き戻す。smbpasswd でパスワード再設定。
とりあえずインストール時の設定で xorg.conf を作る。
Load "freetype"
をコメントアウトして、
Load "xtt"
に変更。
sid は現在 3.5.3 と 3.5.4 混在状態になっているため、依存関係の問題で簡単にはインストールできずてこずった。 kdebase-data と kdelibs-data の 3.5.3 を http://snapshot.debian.net/ からとってきて hold して 3.5.3 系 KDE として各種パッケージをインストール。
skype-beta-1.3.0.30-1_i386.deb をインストール。
一般ユーザ naney の crontab ファイルを再登録。
足りないと気がついた時点で順次インストール。
/etc/auto.master、/etc/auto.misc を書き戻して /etc/init.d/autofs restart。
deb パッケージを公式サイトからダウンロードし、/etc/mt-daapd.conf を書き戻して /etc/init.d/mt-daapd restart
現在 ThinkPad X31 で X.Org X server 7.0.22 を使っているのだが、サスペンド/レジュームがうまく使えていない。
ATI の fglrx ドライバを入れたらもしかしたらうまくいくかなと思いチャレンジ。
module-assitant prepare module-assistant auto-install fglrx
コンパイルエラー。
Linux kernel 2.6.17 だと fglrx に パッチを当てる必要があるらしい。 ついでに Linux kernel の方もいくつか組み込みではなくモジュールしておかなければならないものがあるらしいので、全部再コンパイルする。
まずは fglrx-kernel-src をインストール。 でいつも通り /usr/local/src/linux 以下で作業。/usr/local/src/linux-source-2.6.17 以下に前回ビルドしたソースツリーがある。
tar jxvf /usr/src/fglrx.tar.bz2 emacs modules/fglrx/firegl_public.c # 一部修正 cd linux-source-2.6.17/ MODULE_LOC=/usr/local/src/linux/modules fakeroot make-kpkg --revision=sebastian.1.1 modules_image cd .. dpkg --install linux-image-2.6.17_sebastian.1.1_i386.deb dpkg --install fglrx-kernel-2.6.17_8.24.8-1+sebastian.1.0_i386.deb
で再起動。で fglrx をロードしてみる。
WARNING: Error inserting fglrx (/lib/modules/2.6.17/misc/fglrx.ko): No such device
駄目。drm、radeon、fb がロードされていると駄目らしいのでアンロードしてあるのだがそれでも駄目である。
引き続き調査。
Windows 向け KDE のインストーラが公開された。 一昨年の4月ぐらいから、Linux デスクトップは KDE ベースにして使っていることもあって、Windows でも(ファイラとして) Konqueror を使ったりしたいと思っていたので、早速 Windows XP BOX にインストールしてみた。
インスーラはネットワークインストール用のもので、必要なパッケージを選ぶとダウンロードしてインストールされるタイプ。
うまく入ったみたいなので、さっそく Konqueror を起動してみた。
……なんかかなりもっさりしているな。 fish も使えないや。 [Settings] -> [Configure Konqueror...] してみたら落ちた。
うーん、まだ駄目っぽい。 今後に期待。
社内 Web ページ全文検索用に設定していた Hyper Estraier だが、かなーり前からたまにクロール/インデックス作成に失敗してインデックスが壊れてしまうことがあった。で検索できないまま放置していたのだが、やはり時々検索したいというリクエストをもらったので、復旧することにした。 Hyper Estraier も 1.2.7 のままだったので、最新版に更新。 設置が 2006年6月なので3年ぶりの更新。
前回と同様ソースからのインストール。 今回は自分のホームディレクトリ以下に。 以下作業手順メモ。
wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz tar zxvf qdbm-1.8.77.tar.gz cd qdbm-1.8.77 ./configure --enable-zlib --prefix=$HOME/local/hyperestraier-1.4.13 make check make install
wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz tar zxvf hyperestraier-1.4.13.tar.gz cd hyperestraier-1.4.13 PKG_CONFIG_PATH=$HOME/local/hyperestraier-1.4.13/lib/pkgconfig ./configure --prefix=$HOME/local/hyperestraier-1.4.13 make make check make install
前回 /usr/local/var/lib/hyperestraier/estwaver に保存するようにしていたので、今回もそそれはそのままで。 クローラのルートにある _conf は作り直しの際に間違えて消してしまいそうになるので、ホームの etc においておいてシンボリックリンクをはっておく。 _conf は以前に作っておいたものを利用。
mkdir /usr/local/var/lib/hyperestraier/estwaver $HOME/local/hyperestraier-1.4.13/bin/estwaver init /usr/local/var/lib/hyperestraier/estwaver rm /usr/local/var/lib/hyperestraier/estwaver/_conf ln -s $HOME/etc/hyperestraier/_conf /usr/local/var/lib/hyperestraier/estwaver/_conf $HOME/local/hyperestraier-1.4.13/bin/estwaver crawl -revcont /usr/local/var/lib/hyperestraier/estwaver
cd $WEBDIR/search/hyperestraier cp $HOME/local/hyperestraier-1.4.13/libexec/estseek.cgi . chmod 755 estseek.cgi cp $HOME/local/hyperestraier-1.4.13/share/hyperestraier/locale/ja/estseek.* .
で estseek.conf を編集。indexname を /home/naney/local/hyperestraier-1.4.13/estwaver/_index に。その他好みにあわせて設定を変更。
前回の設定では、クロールとインデックスの更新夜中に行うからインデックスがロックされてもいいやと直にオリジナルのインデックスを更新するようにしていたが、今回はきちんとコピーして更新するようにした。 1日1回以下のスクリプトを実行するように設定。
#!/bin/sh PREFIX=/home/naney/local/hyperestraier-1.4.13 VARDIR=/usr/local/var/lib/hyperestraier test -e $VARDIR/estwaver-copy && exit cp -a $VARDIR/estwaver $VARDIR/estwaver-copy $PREFIX/bin/estwaver crawl -revcont $VARDIR/estwaver-copy $PREFIX/bin/estcmd inform $VARDIR/estwaver-copy/_index || exit rm -rf $VARDIR/estwaver mv $VARDIR/estwaver-copy $VARDIR/estwaver
リクエストしてくれた人、検索できるようになったから使ってね。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。
※内容は個人的見解であり所属組織とは関係ありません。