QDBM のインストール

2022年現在サポートされている Linux ディストリビューションのサーバーで、QDBM をソースパッケージからコンパイルしてインストールする方法を説明します。

QDBM とは?

QDBM はデータベースを扱うライブラリで、 SearchEstraier プラグインの動作に必要な検索システム Hyper Estraier の動作・インストールに必要です。

インストールに必要となる主なソフトウェア・ライブラリ

  • GCC (GNU Compiler Collection) バージョン2.8以降、7未満
  • Make
  • zlib

利用可能な GCC のバージョンが7以降の場合

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つのパッチを、下記の順序で当てます。

  1. qdbm-configure.patch
  2. qdbm-perl.patch
  3. qdbm-ruby19.patch
  4. qdbm-runpath.patch
  5. qdbm-darwin.patch
$ 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

GCC のバージョン7未満の後方互換性パッケージが利用可能な場合

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

利用可能な GCC のバージョンが7未満の場合

ほとんど該当しないとは思いますが、非常に古い 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 はディストリビューターによるサポートが終了しており、利用を継続することは危険ですので、稀な事例かと思われます。