Raspberry pi 3 上でhtags (GNU GLOBAL)を使ってソースコードから生成した web ページをそのまま web サーバーにコピーして使おうとした。CGI に関数名を入れて検索したら Pattern not found となった。原因は GNU global のバージョン違いだった。Raspberry pi 3 上の global は 6.5.6、web サーバー上の global は 5.7.1 だった。
web サーバー上で GNU GLOBAL 6.6.1 をソースコードから構築し、HTML/cgi-bin/global.cgi と HTML/cgi-bin/completion.cgi の $global_command を構築した global の path に変更して解決する。
古い gtags と互換形式を生成するようなオプションは見つからなかった。サーバー上の GNU GLOBAL を新しくする必要がある。package のバージョンは古いままだったのでソースから構築することにした。Getting GLOBALのページから tar.gz でまとめられたソースコードをダウンロードして展開する。
global 6.6.1 をホームディレクトリ以下にインストールする作業を次の様に行った。
work_base_directory $ tar zxvfdown_loaded_directory/global-6.6.1.tar.gz $ cd global-6.6.1 $ ./configure --prefix $HOME/global-6.6.1 $ mkdir $HOME/global-6.6.1 $ make -j 4 $ make install
CGI は HTML/cgi-bin/global.cgi と HTML/cgi-bin/completion.cgi の次の部分を編集して、先にインストールした global の full path にする(例えば $HOME を展開して /home/furuta/global-6.6.1/bin/global の様に書き直す)。
my $global_command = '/usr/bin/global';
新しい GNU GLOBAL は htags に --auto-completion を付けて web ページを生成すると検索テキストボックスで自動補完が使える。詳細は --auto-completion あるいは --suggest2 オプションの説明にある。