I have compiled ImageMagick on the CentOS, and RMagick won’t install

imagemagickrubygems

I installed ImageMagick through, (Using ImageMagick 6.7.3-7)

./configure --prefix=/usr && make && make install

When I try to

gem install imagemagick

I get

Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... yes
checking for ImageMagick version >= 6.4.9... yes
checking for HDRI disabled version of ImageMagick... yes
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no

Can't install RMagick 2.13.1. Can't find MagickWand.h.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/bin/ruby

This is despite the fact that MagickWand.h is already in the system in /usr/include/ImageMagick/wand/MagickWand.h. So the question is, how do I actually get the compiler to look in there?

Best Answer

Had the same problem on CentOS using latest everything (as of Dec 2011), and fixed it with:

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"

in my .bashrc file to pick up MagickCore.pc, then created two symlinks:

ln -s /usr/local/include/ImageMagick/wand /usr/local/include/wand
ln -s /usr/local/include/ImageMagick/magick /usr/local/include/magick

And voila, the MagickWand.h was found, the MagickCore.pc was picked up... gem installed successfully.

I imagine another solution would be to modify the configure options set during ImageMagick installation, but I'm not enough of a sysadmin to be clear what the right option and location would be for these files. After 45 minutes of googling around, I couldn't figure where these files are supposed to live, to be automatically picked up by the gem install make system.

Cheers!

EDIT: 2014-10-01

Just did this again for CentOS 7, and the ln commands above were not needed. However, I ran into an issue where I got "Package MagickCore was not found in the pkg-config search path." on running sudo gem install rmagick.

The problem was the environment reset in /etc/sudoers. After running sudo visudo to edit the sudoers file, I added Defaults env_keep += "PKG_CONFIG_PATH" to the appropriate section, updated the secure path to include /usr/local/bin, and then installing worked like a charm.

Related Question