Hyper EstraierのMinGW上での再ビルド
会社の部内サーバ検索用に、オープンソースの全文検索システム、HyperEstraierを導入してみました。簡単にセットアップでき、検索も高速でとてもいいですね!作者の方に感謝です。
バイナリパッケージも配布されていますが、今回、必要があってWindows用バイナリの再ビルドを行ったので、手順をメモしておきます。
以下の手順については、こちらのページが大変参考になりました:しののんだいあり〜[pc] HyperEstraierのビルド
使用したパッケージ
配布元サイト
ツールと依存パッケージのインストール
(1)MinGWとMSYSのインストール。MinGWは、パッケージ選択でg++ compilerのみを選択する。
(2)MinGWの追加ライブラリをインストール。アーカイブファイルを展開して以下の各所にコピー。MSYSはインストール先のbin,doc,etcなどのあるディレクトリが、ルートと/usrの両方に見える。したがって、msys/1.0/local以下に各ファイルを配置することで/usr/local/*へインストールしたことになる。
アーカイブ | 展開したファイル | コピー先 | |
---|---|---|---|
libiconv-1.11-1-bin.tar.bz2 | usr/local/* | msys/1.0/local/* | |
libiconv-1.11-1-dll.tar.bz2 | usr/local/bin/* | msys/1.0/local/bin/* | |
mingw-libgnurx-2.5.1-bin.tar.gz | bin/* | msys/1.0/local/bin/* | |
mingw-libgnurx-2.5.1-dev.tar.gz | mingw-libgnurx-2.5.1-dev/* | msys/1.0/local/* | |
pthreads-w32-2-8-0-release.exe | Pre-built.2/include/* Pre-built.2/lib/* |
msys/1.0/local/include/* msys/1.0/local/lib/* |
|
zlib123-dll.zip | zlib1.dll include/* lib/* |
msys/1.0/local/bin/zlib1.dll msys/1.0/local/include/* msys/1.0/local/lib/* |
|
UnxUtils.zip | usr/local/wbin/zip.exe | msys/1.0/local/bin/zip.exe | |
d2txt127.zip | xdoc2txt.*, zlib.dll | msys/1.0/local/xdoc2txt/* |
- zlib123-dllは、ファイルのコピー後、MSYSのコンソールを起動し、USAGE.txtの記述にしたがって、
cd /usr/local dlltool.exe -D bin/zlib1.dll -d lib/zlib.def -l lib/libzdll.a
qdbmのビルド/インストール
(1)msys/1.0/home/<ユーザ名>/以下にqdbm-1.8.77.tar.gzを展開(MSYSのコンソールで、ホームディレクトリになる)。
(2)configureスクリプト、Makefile.inを若干編集する。
- 圧縮ライブラリのリンクオプションが-lzになっているので、-lzdllに書き換える(3ヶ所)。
- MinGW用ターゲット('mingw:')のコマンドラインに、zlibとiconvの参照先ディレクトリを追記する。makeの引数で設定しているLIBLDFLAGS/LDFLAGSの2つのマクロの先頭に、'-L/usr/local/lib'を追加。
パッチファイルにまとめるとこんな感じ→QDBMをMinGWで再ビルドするときの変更点
(3)以下のコマンドでビルド&インストール。
cd qdbm-1.8.77 patch -p1 < ../-1.8.77-build-on-mingw.patch ./configure --enable-zlib --enable-iconv make mingw make install-win
これで/usr/local/以下にインストールされる。
'--enable-zlib'で圧縮を有効にしないと、公式配布のバージョンで作成したインデックスが使用できなくなってしまう。
HyperEstraierのビルド
(1)msys/1.0/home/<ユーザ名>/以下にhyperestraier-1.4.13.tar.gzを展開。
(2)configureスクリプトを若干編集する。
- 圧縮ライブラリのリンクオプションが-lzになっているので、-lzdllに書き換える(2ヶ所)。
- pthreadライブラリのリンクオプションが-lpthreadになっているので、-lpthreadGC2に書き換える(2ヶ所)。
(3)Makefile.inも若干書き換える。
- MinGW用ターゲットのリンクコマンドラインに-lzが書いてあるので-lzdllに書き換え。
- Windows用のパッケージ作成ターゲットで、*.dllや*.hをCygwin環境でのパスで参照しているので、必要に応じて書き換え。
- JavaバインディングやRubyバインディングが不要なら、パッケージ作成ターゲットの記述からはずす。
(4)ビルド
上の(2),(3)をパッチファイルにまとめるとこんな感じ→HyperEstraierをMinGWで再ビルドするときの変更点
cd hyperestraier-1.4.13/ patch -p1 < ../hyperestraier-1.4.13-build-on-mingw.patch ./configure make winpkg
これでWindows用のバイナリパッケージファイルhyperestraier-1.4.13-win32.zipが生成されます。