"the geoip2 module requires the maxminddb library" but the library is installed
Solution 1
I was missing the "devel" version of maxminddb, so I used:
yum install libmaxminddb-devel
Solution 2
To anyone having this problem, here is the solution:
- git clone --recursive https://github.com/maxmind/libmaxminddb
- cd libmaxminddb
- ./bootstrap
- ./configure
- make
- make install
I noticed that initially after cloning there was no configure executable, but after running ./bootstrap, it got created.
Then i run ./configure, make, make install, and then i noticed that within the folder /usr/local/include
maxminddb_config.h and maxminddb.h were created.
Then i run my installation nginx script and there were no errors anymore.
MLister
Updated on September 18, 2022Comments
-
MLister over 1 year
I am trying to compile
nginx
with a module: https://github.com/leev/ngx_http_geoip2_module. Before the nginx compilation, this library: https://github.com/maxmind/libmaxminddb needs to be installed. I followed the instructions (https://github.com/maxmind/libmaxminddb/blob/master/README.md#installing-from-a-tarball), compiled and installed the library. After the installation,ldconfig -p | grep maxminddb
gives:libmaxminddb.so.0 (libc6,x86-64) => /usr/local/lib/libmaxminddb.so.0 libmaxminddb.so (libc6,x86-64) => /usr/local/lib/libmaxminddb.so
However, when I configure nginx with ngx_http_geoip2_module, it complains during configure:
adding module in /home/cilium/ngx_http_geoip2_module checking for MaxmindDB library ... not found ./configure: error: the geoip2 module requires the maxminddb library.
which is exactly the library I've already installed. This error seems to come from the
config
file ofngx_http_geoip2_module
:ngx_feature="MaxmindDB library" ngx_feature_name= ngx_feature_run=no ngx_feature_incs="#include <maxminddb.h>" ngx_feature_libs=-lmaxminddb . auto/feature if [ $ngx_found = yes ]; then ngx_addon_name=ngx_http_geoip2_module HTTP_MODULES="$HTTP_MODULES ngx_http_geoip2_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_geoip2_module.c" CORE_LIBS="$CORE_LIBS -lmaxminddb" else cat << END $0: error: the geoip2 module requires the maxminddb library. END exit 1 fi
Does anyone know what may have gone wrong here?
UPDATE: some relevant output by
sh -x ./configure ..
:+ echo adding module in /home/cilium/ngx_http_geoip2_module adding module in /home/cilium/ngx_http_geoip2_module + test -f /home/cilium/ngx_http_geoip2_module/config + . /home/cilium/ngx_http_geoip2_module/config + ngx_feature=MaxmindDB library + ngx_feature_name= + ngx_feature_run=no + ngx_feature_incs=#include <maxminddb.h> + ngx_feature_libs=-lmaxminddb + . auto/feature + echo checking for MaxmindDB library ...\c checking for MaxmindDB library ...+ cat + ngx_found=no + test -n ... + [ -x objs/autotest ] + echo not found not found + echo ---------- + cat objs/autotest.c + echo ---------- + echo cc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/chromium/src -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/google-sparsehash/src -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/google-sparsehash/gen/arch/linux/x64/include -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/protobuf/src -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/re2/src -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/out/Debug/obj/gen -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/out/Debug/obj/gen/protoc_out/instaweb -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/apr/src/include -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/aprutil/src/include -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/apr/gen/arch/linux/x64/include -I /home/cilium/ngx_pagespeed-release-1.9.32.1-beta/psol/include/third_party/aprutil/gen/arch/linux/x64/include -o objs/autotest objs/autotest.c -Wl,-Bsymbolic-functions -Wl,-z,relro -lmaxminddb + echo ---------- + rm -rf objs/autotest.c + [ no = yes ] + cat ./configure: error: the geoip2 module requires the maxminddb library. + exit 1
-
Zhang Qi over 9 yearsDid the header get installed?
-
MLister over 9 years@o11c, missing headers sounds like a possibility. I just followed the installation guide. How do I find out if headers for a specific library exist?
-
Zhang Qi over 9 years
locate maxminddb.h
if you have your file database up-to-date, orfind /usr/local/include /usr/include -name maxminddb.h
if you don't. Most likely it would be in/usr/local/include
since the libs were in local. -
MLister over 9 years@o11c, thanks. The header file is installed, it is at: /usr/local/include/maxminddb.h. Strange, so what else could cause the problem?
-
MLister over 9 years@o11c, is it possible that the script only looks in
/usr/include
but not in/usr/local/include
? -
vinc17 over 9 yearsThe configure script says that the library is not found, not that the header is not found. Look at the config.log file for the real error.
-
vinc17 over 9 yearsAnd in case the configure script doesn't put enough information in the config.log file, you can also run it with
sh -x ./configure
to trace the shell commands (this will give you a lot of output). Note that GCC (actually cpp) looks at/usr/local/include
by default (see withcpp -v /dev/null
). -
MLister over 9 years@vinc17, I don't see
config.log
file anywhere. Is it the log file for the configure ofnginx
or something else? Can you elaborate? -
MLister over 9 years@vinc17, and
sh -x ./configure ...
throwssh: 0: Can't open ./configure
-
vinc17 over 9 years@MLister
config.log
is the usual log file forconfigure
scripts: if there is any error, you can get useful information there. When you runsh -x ./configure ...
, are you sure that you are in the right directory (where theconfigure
script is)? This is similar to./configure ...
except that the shell is run with the-x
flag. -
MLister over 9 years@vinc17, I've searched the whole system, but cannot find
config.log
anywhere. Perhapsnginx
's configure does not produce such a log. On the other hand, I've managed to run the configure withsh -x
, and I've added the relevant output to my original question above. -
Prasanth over 9 yearsAre you also installing the pagespeed module? if yes, move the pagespeed argument to after this module's argument in the configure arguments. more here.
-