Hyper Estraierをインストールする(全文検索システム) | Solaris

SolarisにHyper Estraier(全文検索システム)をインストールする。

【インストールマニュアル】

【全体の流れ】 

  • gcc、make のバージョンの確認
  • ライブラリパスの確認
  • 文字コード変換 libiconv のバージョンの確認、インストール
  • 可逆データ圧縮 zlib のバージョンの確認、インストール
  • 組み込み用データベース QDBM のバージョンの確認、インストール
  • 検索エンジン Hyper Estraier のインストール

 

■LD_LIBRARY_PATHが通っているか確認する

echo $LD_LIBRARY_PATH してパスが表示されなかったら、実行しておく。

$ LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/sfw/lib
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/dt/lib:/usr/openwin/lib
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/xpg4/lib:/lib:/usr/ccs/lib
$ export LD_LIBRARY_PATH

SPARCのときは、これだけ指定した記憶がある。x86-64 Solarisにインストールするときは、途中でmakeエラーが出て、crleを実行したりしてもがいてしまった。

 

 ■libiconvをインストールしておく

要求しているlibiconvのバージョンをHyper Estraierのインストールページで確認しておく。 

パッケージをインストールした。パッケージは、www.sunfreeware.comからダウンロードする。

 

例えば、SPARK Solaris9用のものは、ここから。

http://www.sunfreeware.com/programlistsparc9.html#libiconv  

http://www.sunfreeware.com/programlistsparc9.html#gcc34 

libiconvが、gcc3.4.6を必要としているので、最初にダウンロードしてインストールする。 

 

gcc 3.4.6 

# gunzip gcc-3.4.6-sol9-sparc-local.gz 
# pkgadd -d gcc-3.4.6-sol9-sparc-local

 

libiconv 1.11 

# gunzip libiconv-1.11-sol9-sparc-local.gz
# pkgadd -d libiconv-1.11-sol9-sparc-local

 

gnuのソースからインストールする場合。

gnuのミラーサーバからゲットする。(GNUのサイトは混んでいるので、1MBのファイルとしてダウンロードされてしまったが、実際は4.3MBであるため。)

国内ミラー 

http://core.ring.gr.jp/pub/GNU/libiconv/ 

libiconv 1.12

$ gunzip libiconv-1.12.tar.gz  
$ tar xvf libiconv-1.12.tar
$ cd libiconv-1.12
$ ./configure --prefix=/usr/local
# make
# make install

 

 

■zlibをインストールしておく

zlibのダウンロード

http://zlib.net/ 

$ tar zxvf zlib-1.2.3.tar.gz
$ cd zlib-1.2.3
$ ./configure
$ make
# make install

cp zlib.h zconf.h /usr/local/include
chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h
cp libz.a /usr/local/lib
cd /usr/local/lib; chmod 755 libz.a
cd /usr/local/lib; if test -f libz.so.1.2.3; then ¥
rm -f libz.so libz.so.1; ¥
ln -s libz.so.1.2.3 libz.so; ¥
ln -s libz.so.1.2.3 libz.so.1; ¥
(ldconfig || true) >/dev/null 2>&1; ¥
fi
cp zlib.3 /usr/local/share/man/man3
chmod 644 /usr/local/share/man/man3/zlib.3

 

 

■QDBMをインストールしておく

SourceForgeからダウンロードする。

http://sourceforge.net/projects/qdbm/ 

QDBM 1.8.77 

$ tar zxvf qdbm-1.8.77.tar.gz 
$ cd qdbm-1.8.77
$ ./configure --enable-zlib | tee configure.log 2>&1
$ make | tee make.log 2>&1
# make install | tee make-install.log 2>&1

作者のホームページから抜粋。
「QDBMをインストールする際には、zlibを有効化(./configure --enable-zlib)しておくことをお薦めします。その方がHyper Estraierの作るインデックスが小さくなります。」

ということで、zlibを有効化して、ログをとりながらインストールしてみました。

インストール後、ldd /usr/local/bin/dpmgr などとチェックして、ライブラリがきちんと指定されているかチェックするとよいです。ダメだったら、LD_LIBRARY_PATHを指定して直後にインストールする。

 

x86-64のSolaris10でmakeしたところ、このようなエラーが発生した。

ld: fatal: Symbol referencing errors. No output written to dpmgr
collect2: ld returned 1 exit status
make: *** [dpmgr] Error 1 

最初からやり直してみた。ライブラリパスを毎回指定するのが面倒なので.profileに書いて、gcc, libiconv, zlibを上書きインストールしてから、qdbmのインストールに再チャレンジしたら上手くいった。なぜだ...。

 

■Hyper Estraierをインストールする

作者のホームページの指示通り作業する。

ダウンロードした容量が小さかった(不完全)ので、sourceforgeからダウンロードした。

http://sourceforge.net/projects/hyperestraier/ 

$ tar zxvf hyperestraier-1.4.13.tar.gz
$ cd hyperestraier-1.4.13
$ ./configure (ビルド環境の設定)
$ make (プログラムのビルド)
$ make check (プログラムの自己診断テスト)
# make install (プログラムのインストール)

(別サーバのSolaris9に入れるときは、make checkでError 2が最後に表示された。) 

 

x86-64のSolaris10でmakeしたときにエラーが発生した。

Text relocation remains                 	referenced
against symbol offset in file
crc_table 0x4 /usr/local/lib/libz.a(crc32.o)
(中略...)
memset 0x1028 /usr/local/lib/libz.a(deflate.o)
memset 0x11e7 /usr/local/lib/libz.a(deflate.o)
memset 0x1567 /usr/local/lib/libz.a(deflate.o)
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
make: *** [libestraier.so.8.38.0] Error 1

/usr/local/lib/libz.a関連のメッセージがずらりと並んだ後に、makeエラー。

調べてみると、libz.aとしてインストールされている場合、リンカがエラーを起こすということなので、一時的にリネームしておく。/usr/local/lib/libz.a を無視して /usr/lib/libz.soを使わせるということかな...後で調べるっっっ。makeに成功して、make installした後で元通りリネームしておく。(参考ページ:Solaris 10 Mysql-5

# mv /usr/local/lib/libz.a /usr/local/lib/_libz.a_ 

 

 

インストールされたバイナリがきちんとライブラリを指定できているか確認しておいた。

$ ldd /usr/local/bin/estcmd 
libestraier.so.8 => ./libestraier.so.8
libresolv.so.2 => /lib/libresolv.so.2
libsocket.so.1 => /lib/libsocket.so.1
libnsl.so.1 => /lib/libnsl.so.1
libpthread.so.1 => /lib/libpthread.so.1
libqdbm.so.14 => ./libqdbm.so.14
libz.so.1 => /usr/lib/libz.so.1
libiconv.so.2 => ./libiconv.so.2
libm.so.2 => /lib/libm.so.2
libc.so.1 => /lib/libc.so.1
libgcc_s.so.1 => ./libgcc_s.so.1
libmp.so.2 => /lib/libmp.so.2
libmd.so.1 => /lib/libmd.so.1
libscf.so.1 => /lib/libscf.so.1
libdoor.so.1 => /lib/libdoor.so.1
libuutil.so.1 => /lib/libuutil.so.1
libgen.so.1 => /lib/libgen.so.1

 

 ちなみにMacにインストールするときは、

$ ./configure
$ make mac
$ make check-mac
$ make install-mac

だそうです。

 

SPARCのSolaris9とSolaris10は、しゅるっとインストールできたけど、x86-64 Solaris 10 では苦労してしまった。