2022年現在サポートされている Linux ディストリビューションのサーバーで、QDBM をソースパッケージからコンパイルしてインストールする方法を説明します。
QDBM はデータベースを扱うライブラリで、 SearchEstraier プラグインの動作に必要な検索システム Hyper Estraier の動作・インストールに必要です。
QDBM は安定・成熟した、いわゆる枯れたソフトウェアライブラリなので、開発者による開発や保守が終了して久しく、新しいバージョンの GCC に対応していません。 最近の Linux ディストリビューションでは、QDBM が対応している古いバージョン7未満の GCC を利用することが難しくなっています。 OS で標準的に利用可能な GCC のバージョンが7以降となる場合、そのままでは QDBM をコンパイルできません。
コンパイルエラーの例:
$ make check
(省略)
make: *** [check] Segmentation fault
対処法は2つあります。
QDBM のソースコードに Gentoo Linux が提供しているパッチを当て、バージョン7以降の GCC に対応させることでコンパイルとインストールが可能となります。
ソースパッケージとパッチファイルをダウンロード・展開します。
$ wget https://dbmx.net/qdbm/qdbm-1.8.78.tar.gz https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-db/qdbm/files/qdbm-{configure,darwin,perl,ruby19,runpath}.patch
$ tar xf qdbm-1.8.78.tar.gz
$ cd qdbm-1.8.78
ダウンロードした5つのパッチを、下記の順序で当てます。
$ for pfile in ../qdbm-{configure,perl,ruby19,runpath,darwin}.patch; do patch -p1 < $pfile; done patching file cgi/configure.in patching file configure.in patching file java/configure.in patching file perl/configure.in patching file plus/configure.in patching file ruby/configure.in patching file perl/Makefile.in patching file ruby/Makefile.in patching file ruby/configure.in Hunk #1 succeeded at 8 (offset -9 lines). patching file ruby/curia/mod_curia.c patching file ruby/curia/rbcrtest patching file ruby/depot/mod_depot.c patching file ruby/depot/rbdptest patching file ruby/myrbdoc patching file ruby/villa/mod_villa.c patching file ruby/villa/rbvltest patching file Makefile.in patching file cgi/Makefile.in patching file plus/Makefile.in patching file Makefile.in
コンパイルしてシステムにインストールします。
$ ./configure --enable-zlib
$ make && make check
(「Checking completed.」の表示を確認する。)
$ sudo make install
OS で「compat-gcc-48」のような GCC の後方互換性パッケージが利用できる場合は、それを利用してコンパイルとインストールが可能です。 ただし2022年現在、OS の開発元によるサポートが継続中で、後方互換性パッケージが利用できる OS ディストリビューションは少ないので、この方法はお勧めしません。
例: パッケージ「compat-gcc-48」が利用できる場合
$ yum install compat-gcc-48-c++
$ wget https://dbmx.net/qdbm/qdbm-1.8.78.tar.gz
$ tar xf qdbm-1.8.78.tar.gz
$ cd qdbm-1.8.78
$ CC=gcc48 ./configure --enable-zlib
$ make && make check
(「Checking completed.」の表示を確認する。)
$ sudo make install
ほとんど該当しないとは思いますが、非常に古い OS ディストリビューションでは GCC のバージョンが4など、7未満なので、特別な対応は要らずにコンパイルとインストールが可能です。
$ wget https://dbmx.net/qdbm/qdbm-1.8.78.tar.gz
$ tar xf qdbm-1.8.78.tar.gz
$ cd qdbm-1.8.78
$ ./configure --enable-zlib
$ make && make check
(「Checking completed.」の表示を確認する。)
$ sudo make install
ただ前述の通り、現在ではそのような OS はディストリビューターによるサポートが終了しており、利用を継続することは危険ですので、稀な事例かと思われます。