set setting reset

脂肪と糖にはたらくやつ

pgpool インストール時に configure: error: header file <libmemcached/memcached.h> is required for memcached support

背景

pgpool-4.0.1 を検証していたら pgpool-4.0.2 が出たのでインストールしてみたところ表題のエラーとなりました。

エラー発生時のインストール手順

pgpoolのインストールはソースから行いますが、インメモリクエリキャッシュを使いたいのでlibmemcachedをインストールします。

# yum install libmemcached

以下の手順で configure してみると WARNING がでます。

# cd /usr/local/src
# curl -L 'http://www.pgpool.net/download.php?f=pgpool-II-4.0.2.tar.gz' -o pgpool-II-4.0.2.tar.gz
# tar xzf pgpool-II-4.0.2.tar.gz
# cd pgpool-II-4.0.2
# ./configure --with-pgsql=/usr/pgsql-9.6 --with-openssl --with-libmemcached=/usr/lib64/libmemcached.so.11

~略~
configure: WARNING: unrecognized options: --with-libmemcached 

--with-libmemcached オプションは非サポートとなり、 --with-memcached となったようです。
なお、ビルドそのものは可能でした。

オプションを変更して再チャレンジしてみると前述のエラーとなりました。

# ./configure --with-pgsql=/usr/pgsql-9.6 --with-openssl --with-libmemcached=/usr/lib64/libmemcached.so.11

~略~

checking libmemcached/memcached.h usability... no
checking libmemcached/memcached.h presence... yes
configure: WARNING: libmemcached/memcached.h: present but cannot be compiled
configure: WARNING: libmemcached/memcached.h:     check for missing prerequisite headers?
configure: WARNING: libmemcached/memcached.h: see the Autoconf documentation
configure: WARNING: libmemcached/memcached.h:     section "Present But Cannot Be Compiled"
configure: WARNING: libmemcached/memcached.h: proceeding with the compiler's result
configure: WARNING:     ## ---------------------------------------- ##
configure: WARNING:     ## Report this to pgpool-hackers@pgpool.net ##
configure: WARNING:     ## ---------------------------------------- ##
checking for libmemcached/memcached.h... no
configure: error: header file <libmemcached/memcached.h> is required for memcached support

why?

メッセージの通り libmemcached/memcached.h が存在しないためのようでした。
yum でインストールしたからでしょうか。バイナリのみがサーバー上に存在しています。

# updatedb && locate libmemcached
/usr/lib64/libmemcached.so.11
/usr/lib64/libmemcached.so.11.0.0
/usr/lib64/libmemcachedprotocol.so.0
/usr/lib64/libmemcachedprotocol.so.0.0.0
/usr/lib64/libmemcachedutil.so.2
/usr/lib64/libmemcachedutil.so.2.0.0
/usr/share/doc/libmemcached-1.0.16
/usr/share/doc/libmemcached-1.0.16/AUTHORS
/usr/share/doc/libmemcached-1.0.16/COPYING
/usr/share/doc/libmemcached-1.0.16/ChangeLog
/usr/share/doc/libmemcached-1.0.16/README
/usr/share/doc/libmemcached-1.0.16/THANKS
/usr/share/doc/libmemcached-1.0.16/TODO

libmemcached をソースでインストールしてみる

以下の手順で libmemcached をソースからインストールしてみます。

# curl -L https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz -o libmemcached-1.0.18.tar.gz
# tar xzf libmemcached-1.0.18.tar.gz
# cd libmemcached-1.0.18
# ./configure
# make
# make install

すると、 libmemcached は /usr/local/include/libmemcached にインストールされます。

# updatedb && locate memcached.h
/usr/local/include/libmemcached/memcached.h
~略~

再度 pgpool をビルド

先程のエラーメッセージでは configure: error: header file <libmemcached/memcached.h> ということでしたが、
まさかヘッダーファイルのみをオプションに指定するわけではないだろうということで、ディレクトリを指定してみるとビルドが通りました!

# ./configure --with-pgsql=/usr/pgsql-9.6 --with-openssl --with-memcached=/usr/local/include/libmemcached
# make && make install

こういうものなんですかね。
とりあえずこれで進めてみます。