Techioz Blog

Geocoder gem のインストール中にこのエラーを解決するにはどうすればよいですか?

概要

システムに geocoder gem をインストールしようとしています

gem インストール ジオコーダ

このエラーが発生します。

gem install gecoder
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions. This could take a while...
ERROR:  Error installing gecoder:
        ERROR: Failed to build gem native extension.

    current directory: C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/gecoder-1.1.0/ext
C:/Ruby31-x64/bin/ruby.exe -I C:/Ruby31-x64/lib/ruby/3.1.0 extconf.rb
checking for () in -lgecodesupport... no
checking for () in -lgecodekernel... no
checking for () in -lgecodeint... no
checking for () in -lgecodeset... no
checking for () in -lgecodesearch... no
checking for () in -lgecodeminimodel... no
checking for rust_conversions.hh in C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/gecoder-1.1.0/vendor/rust/include... no
checking for rust_checks.hh in C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/gecoder-1.1.0/vendor/rust/include... no
creating Makefile

current directory: C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/gecoder-1.1.0/ext
make DESTDIR\= sitearchdir\=./.gem.20230919-21092-zpz8xc sitelibdir\=./.gem.20230919-21092-zpz8xc clean
bash.exe: warning: could not find /tmp, please create!

current directory: C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/gecoder-1.1.0/ext
make DESTDIR\= sitearchdir\=./.gem.20230919-21092-zpz8xc sitelibdir\=./.gem.20230919-21092-zpz8xc
generating gecode-x64-mingw-ucrt.def
bash.exe: warning: could not find /tmp, please create!
compiling gecode.cc
In file included from gecode.cc:4:
gecode.hh:8:10: fatal error: gecode/kernel.hh: No such file or directory
    8 | #include <gecode/kernel.hh>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:215: gecode.o] Error 1

make failed, exit code 2

Gem files will remain installed in C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/gecoder-1.1.0 for inspection.
Results logged to C:/Ruby31-x64/lib/ruby/gems/3.1.0/extensions/x64-mingw-ucrt/3.1.0/gecoder-1.1.0/gem_make.out

誰か助けてくれませんか。

解決策

gem install geocode の代わりに gem install gecode を使用しているためです。