2

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 of ngx_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
13
  • Did the header get installed?
    – o11c
    Commented Oct 6, 2014 at 5:11
  • @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?
    – MLister
    Commented Oct 6, 2014 at 6:11
  • locate maxminddb.h if you have your file database up-to-date, or find /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.
    – o11c
    Commented Oct 6, 2014 at 7:18
  • @o11c, thanks. The header file is installed, it is at: /usr/local/include/maxminddb.h. Strange, so what else could cause the problem?
    – MLister
    Commented Oct 6, 2014 at 7:22
  • @o11c, is it possible that the script only looks in /usr/include but not in /usr/local/include?
    – MLister
    Commented Oct 6, 2014 at 7:24

2 Answers 2

3

I was missing the "devel" version of maxminddb, so I used:

yum install libmaxminddb-devel
1
  • debian: sudo apt install libmaxminddb-dev Commented Apr 15, 2023 at 16:15
2

To anyone having this problem, here is the solution:

  1. git clone --recursive https://github.com/maxmind/libmaxminddb
  2. cd libmaxminddb
  3. ./bootstrap
  4. ./configure
  5. make
  6. 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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .