さくらサーバーにインストール

これは、2018年1月現在に行った作業の記録。同じさくらサーバーで7,8年前にインストールしたときとすこしちがっていた点があった。同じさくらでもサーバーのライブラリー環境などが多少変化しているせいかも知れない。

ssh ログインする。

環境変数の設定
% vi .cshrc

set path = ($HOME/bin $HOME/share/hyperestraier/filter /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin)

setenv EDITOR vi
setenv PAGER more
setenv BLOCKSIZE K
setenv PKG_DBDIR ~/db/pkg
setenv LD_LIBRARY_PATH $HOME/lib:/usr/lib:/usr/local/lib
setenv LIBRARY_PATH $HOME/lib:/usr/lib:/usr/local/lib
setenv CPATH $HOME/include

これで ssh 再接続して環境変数を読み込ませておく。

% mkdir -p src bin lib include etc share libexec

以下のソースを FTP で $HOME/src/ にアップロードしてから、ssh のシェルでインストールする。

zlib-1.2.5.tar.gz
% cd src
% tar xzvf zlib*
% cd zlib-1.2.5
% ./configure --prefix=$HOME
% make && make install

libiconv-1.14.tar.gz
同様

qdbm-1.8.78.tar.gz
同様
(./configure オプションに --enable-zlib をつける。)

hyperestraier-1.4.13.tar.gz
同様
(./configure オプションに --enable-static をつけるとコンパイルに失敗するのでつけない。)

xpdf のインストール

つぎに PDF 対応するため xpdf をインストールする。新しいバージョンの xpdf ソースではコンパイルに失敗するので古いのを使う。また、バイナリーをダウンロードしてきても動作しないので、ソースから作ること。
なぜ失敗するのかは確認してない。 xpdf-3.03 の入手
ここから xpdf-3.03.tar.gz を落としてくる。サーバーにFTPアップロード。$HOME/src/

sshログイン。

% cd src
% tar xzvf xpdf*
% cd xpdf-3.03
% ./configure --prefix=$HOME
% make
% make install

この作業では xpdf などのバイナリは作れないが、hyperestraier に最低限必要な pdftotext のバイナリができるので問題ない。$HOME/bin, libexec, share にインストールされる。

% vi /etc/xpdfrc

/usr/local/ を /home/だれそれ(hogehoge)/ に書き換える

#----- begin Japanese support package (2011-sep-02)
cidToUnicode Adobe-Japan1 /home/hogehoge*/share/xpdf/japanese/Adobe-Japan1.cidToUnicode
unicodeMap ISO-2022-JP /home/hogehoge/share/xpdf/japanese/ISO-2022-JP.unicodeMap
unicodeMap EUC-JP /home/hogehoge/share/xpdf/japanese/EUC-JP.unicodeMap
unicodeMap Shift-JIS /home/hogehoge/share/xpdf/japanese/Shift-JIS.unicodeMap
cMapDir Adobe-Japan1 /home/hogehoge/share/xpdf/japanese/CMap
toUnicodeDir /home/hogehoge/share/xpdf/japanese/CMap
#fontFileCC Adobe-Japan1 /usr/..../kochi-mincho.ttf
#----- end Japanese support package

index の作成

ssh にログインした状態で index を作成する。

index ディレクトリの作成
% mkdir /home/hogehoge/www/casket

html ファイル用の作成
% estcmd gather -cl -il ja -sd -cm /home/hogehoge/www/casket /home/hogehoge/www/

pdf ファイル用の作成
% estcmd gather -cl -fx ".pdf" "H@estfxpdftohtml" -fz -ic UTF-8 -sd -cm /home/hogehoge/www/casket /home/hogehoge/www/

なお、pdf の場合はフィルターとして estfxpdftohtml を使うが、フィルターへの PATH が見つからないとコマンドエラーが出るので、
PATH=$PATH:/home/hogehoge/share/hyperestraier/filter
をコマンドの前に設定する必要がある。

検索表示用バイナリ・プログラムの /home/hogehoge/libexec/estseek.cgi と
/home/hogehoge/share/hyperestraier/estseek.conf、estseek.help、estseek.tmpl、estseek.top
をサーバー上の適当な場所にまとめて置く。
estseek.cgi を置く方法は、ssh のシェル画面でコピー移動するか、FTP でアップロードする場合は転送モードをバイナリにする。こうしないと Internal Server Error をおこしてしまう。

estseek.conf を実際の個別環境に合わせて書き換える。(indexname と replace の部分)

検索フォームをウェブ上に作って完了。

特定のディレクトリをインデックスから除外する

検索対象にしたくないファイルがあるばあい、そのディレクトリを除外する設定。

一度、除外せずにインデックスを作っている場合は、まず既存のインデックスを削除する。
% estcmd purge -fc インデックス(casket)

/www/secret というディレクトリ(フォルダ)を除外したいとする。

% find /home/hogehoge/www -type f -not -path /home/hogehoge/www/secret/\* | estcmd gather -cl -il ja -sd -cm /home/hogehoge/www/casket -

ここでは、コマンドをパイプする。secret/ 以下のアタリスク * 前にバックスラッシュ \ が必須。最後のハイフン - は find の出力を標準入力として読み込むため。除外したいディレクトリが複数あるときは、-not -path で追加すればいい。なお、コマンドをシェルスクリプトで作って、cron でインデックスを自動更新するようにする。

例:
% cd /home/hogehoge/bin
% vi estcmd.sh

#!/bin/sh
find /home/hogehoge/www -type f -not -path /home/hogehoge/www/secret/\* | estcmd gather -cl -il ja -sd -cm /home/hogehoge/www/casket -
estcmd purge -cl /home/hogehoge/www/casket
(上の2行目と3行目のあいだは改行ではない、一続きのコマンド)

pdf の場合は

#!/bin/sh
PATH=$PATH:/home/hogehoge/share/hyperestraier/filter
find /home/hogehoge/www -type f -not -path /home/hogehoge/www/secret/\* | estcmd gather -cl -fx ".pdf" "H@estfxpdftohtml" -fz -ic UTF-8 -sd -cm /home/hogehoge/www/casket -
estcmd purge -cl /home/hogehoge/www/casket
(上の3行目と4行目のあいだは改行ではない、一続きのコマンド)

実行属性をつける。
% chmod +x estcmd.sh

cron を設定する。さくらサーバーの場合は「コントロールパネル・ログイン」から設定できる。


(2018年1月20日)