188

Updating RMagick and Imagemagick is a painful expierence. I have updated the Imagemagick version on my mac (MacOS El Capitan Version 10.11.5) with homebrew for one project in Ruby 2.3 to 6.9.5-9

$ convert --version
Version: ImageMagick 6.9.5-9 Q16 x86_64 2016-09-09

Now an older project in Ruby 1.8.7 refuses to work with the error message "this installation of RMagick was configured with ImageMagick 6.8.9 but ImageMagick 6.9.5-9 is in use". Thus I uninstalled "rmagick", but it can not be installed again

$ gem install rmagick -v 2.16.0
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
ERROR: Failed to build gem native extension.

checking for /usr/local/opt/gcc46/bin/gcc-4.6... yes
checking for Magick-config... yes
checking for outdated ImageMagick version (<= 6.4.9)... no
checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
checking for Ruby version >= 1.8.5... yes
checking for stdint.h... no
checking for sys/types.h... no
checking for wand/MagickWand.h... no

Can't install RMagick 2.16.0. Can't find MagickWand.h. 

And if it can not be installed, the whole application can not be started. I tried all the answers from here, and none of them works on MacOS :-( I reinstalled imagemagick and pkg-config with homebrew, and tried various version of RMagick without success. 2.16.0 is the latest version of RMagick currently.

MagicWand seems to be used in ImageMagick version > 6.9, and it can be found on the machine:

find /usr/local -name MagickWand.h
=> /usr/local/Cellar/imagemagick/6.9.5-9_1/include/ImageMagick-6/wand/MagickWand.h

find /usr/local -name MagickWand.pc
=> /usr/local/Cellar/imagemagick/6.9.5-9_1/lib/pkgconfig/MagickCore.pc

It does not work even if I specifiy the these paths during the gem install (same error as above) :-(

C_INCLUDE_PATH=/usr/local/Cellar/imagemagick/6.9.5-9_1/include/ImageMagick-6 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig gem install rmagick

UPDATE:

The error only occurs for Ruby 1.8.7, it is possible to install RMagick for Ruby 2.0 and Ruby 2.3. Ruby 1.8.7 and ImageMagick 6.9.5 do not seem to be compatible.

  • Ruby 1.8.7 x
  • Ruby 2.0.0 ✓
  • Ruby 2.3.1 ✓
Community
  • 1
  • 1
0x4a6f4672
  • 27,297
  • 17
  • 103
  • 140

21 Answers21

519

To solve the issue in Mac OSX Sierra, High Sierra, El Capitan, Mojave, Catalina, Big Sur, and Monterey (M1 chip), you can do the following:

brew unlink imagemagick
brew install imagemagick@6 && brew link imagemagick@6 --force

imagemagick@6 is keg-only, so you'll need to force linking.

K M Rakibul Islam
  • 33,760
  • 12
  • 89
  • 110
57

I had this same issue with ImageMagick 7.0.4-4. The proper fix is to install imagemagick@6. I found https://github.com/Homebrew/homebrew-core/pull/8756 useful if you accidentally deleted your imagemagick@6 or never had it installed in the first place.

Raymond Cox
  • 671
  • 6
  • 10
  • WOW! Thank you so much for that link. I was wasted almost half of my work-day trying to fix this. – Harshad Kale Jan 16 '17 at 20:49
  • 16
    Note that imagemagick@6 is keg-only so you'll need to force linking. `brew install imagemagick@6 && brew link imagemagick@6 --force` solved it for me – Darren Cheng Jan 19 '17 at 07:53
  • 1
    Awesome, cheers! This worked for me: `brew install --force imagemagick@6 && brew link imagemagick@6 --force` – Bella Feb 14 '17 at 02:30
  • 1
    Yes, installing the previous version (6x) would definitely fix it. The issue is that the folder structure of the imagemagick files have change in the 7x version. And while installing the gem it is assuming the folder structure that 6x has – Prakash Raman Mar 26 '17 at 16:04
  • Rolling back to imagemagick@6 doesn't work for me unfortunately. Even after reinstalling and relinking I still get this message when trying to install rmagick: `Using 6.9.8 Q16 from /usr/local/Cellar/imagemagick@6/6.9.8-3. checking for outdated ImageMagick version (<= 6.4.9)... yes checking for Ruby version >= 1.8.5... yes checking for stdint.h... no checking for sys/types.h... no checking for wand/MagickWand.h... no Can't install RMagick 2.15.0. Can't find MagickWand.h.` – Will Hitchcock Apr 07 '17 at 17:02
33

macOs Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
Andy Ray
  • 30,372
  • 14
  • 101
  • 138
Evgeniy28
  • 438
  • 4
  • 4
  • 2
    -1 because you force link for no reason nor telling anyone why this is a bad idea to begin with. See my answer for doing it "properly" in the sense of Homebrew and not MacPorts. – mmlac Oct 27 '17 at 01:23
23

First of all unlink your installed imagemagick which was not properly installed in latest mac high sierra by using.

brew unlink imagemagick

then install latest imagemagic6 using below command

brew install imagemagick@6 && brew link imagemagick@6 --force

Then install gem rmagick using below command

gem install rmagick 

It will work perfectly fine.

Ali Hassan Mirza
  • 552
  • 11
  • 23
18

yah this one solves my issue:

MacOS X Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
Stanislav Mekhonoshin
  • 4,276
  • 2
  • 20
  • 25
BMA88
  • 329
  • 2
  • 2
14

Many things have changed in ImageMagick 7 like this path: include/.../wand , and wand/MagickWand.h is hardwired in the rmagic gem at the moment. In my case it was not possible to update the gem since the project is rather old. So I ended up installing an older version of ImageMagic.

You can install the latest version from 6.x.x:

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/6f014f2b7f1f9e618fd5c0ae9c93befea671f8be/Formula/imagemagick.rb

You can also pin it for later usege: brew pin imagemagick

Peter Toth
  • 974
  • 9
  • 9
  • 1
    Worked for me: Mac OS 10.12.X. I installed ImageMagick 7 first and had problems with installing the rails gem rmagick. – Simon Franzen Apr 03 '17 at 18:01
12

Something changed with ImageMagick 7.0.4-4 for me. wand/MagickWand.h couldn't be found any more:

% brew unlink imagemagick && brew link imagemagick
Unlinking /usr/local/Cellar/imagemagick/7.0.4-4... 71 symlinks removed
Linking /usr/local/Cellar/imagemagick/7.0.4-4... 71 symlinks created
% gem install rmagick
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
    ERROR: Failed to build gem native extension.

    /Users/holger/.rbenv/versions/2.2.2/bin/ruby -r ./siteconf20170116-21103-1aikaka.rb extconf.rb
checking for clang... yes
checking for Magick-config... no
checking for pkg-config... yes
checking for outdated ImageMagick version (<= 6.4.9)... no
checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
checking for Ruby version >= 1.8.5... yes
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no

Can't install RMagick 2.16.0. Can't find MagickWand.h.

I still had ImageMagick 6.9.7-3 on my system and changed back with

% brew switch imagemagick 6.9.7-3
Cleaning /usr/local/Cellar/imagemagick/6.9.6-6
Cleaning /usr/local/Cellar/imagemagick/6.9.7-0
Cleaning /usr/local/Cellar/imagemagick/6.9.7-1
Cleaning /usr/local/Cellar/imagemagick/6.9.7-3
Cleaning /usr/local/Cellar/imagemagick/7.0.4-4
75 links created for /usr/local/Cellar/imagemagick/6.9.7-3

Afterwards I could install rmagick without trouble:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Holger Frohloff
  • 1,695
  • 18
  • 29
  • Could you find any solutions? I'm experiencing same issues with you. – Kemal Akkoyun Jan 16 '17 at 13:48
  • as I said. switching back to imagemagick 6.9 fixes it for me. – Holger Frohloff Jan 16 '17 at 21:27
  • 1
    Thanks, I got that and fixed it, according to your suggestion. But what I was trying to ask if you have solved it using latest ImageMagick version? Then I found the related issue https://github.com/rmagick/rmagick/issues/256 which also suggesting to downgrade ImageMagick as you did. So thanks again. – Kemal Akkoyun Jan 17 '17 at 07:56
  • You are very welcome. I did not solve the problem using version 7.x yet. I guess there will be a fix rather soonish. We'll see. :) – Holger Frohloff Jan 17 '17 at 08:24
9

RMagick depends on an outdated version of imagemagick, version 6.(see below) Homebrew offers this as a keg-only package, which you can install with:

brew install imagemagick@6

The build output will include a Caveats section (also available from brew info imagemagick@6 if you cleared the output):

==> Caveats
imagemagick@6 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have imagemagick@6 first in your PATH run:
  echo 'export PATH="/usr/local/opt/imagemagick@6/bin:$PATH"' >> ~/.zshrc

For compilers to find imagemagick@6 you may need to set:
  export LDFLAGS="-L/usr/local/opt/imagemagick@6/lib"
  export CPPFLAGS="-I/usr/local/opt/imagemagick@6/include"

For pkg-config to find imagemagick@6 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig"

Rather than force-linking, which has the potential to cause problems with other software that does support newer versions of imagemagick, you can use the suggested exports to make the RMagick gem pick up the old version while it builds:

export LDFLAGS="-L/usr/local/opt/imagemagick@6/lib"
export CPPFLAGS="-I/usr/local/opt/imagemagick@6/include"
export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig"
gem install rmagick

  1. Go help contribute to the upgrade effort if you know Ruby and C!
Phil Calvin
  • 5,077
  • 2
  • 41
  • 35
7

Install imagemagick version 6 because version 7 is not compatible:

$ brew install imagemagick@6

Should not link --force the older version because this will change the binaries in your path and the good brew doctor will complain.

Reference the headers and libraries from version 6 that was installed when building the native extension of the gem:

$ PKG_CONFIG_PATH=/usr/local/Cellar/imagemagick@6/6.9.10-14/lib/pkgconfig/ gem install rmagick -v '2.16.0'

Note: Worked for me without indicating the lib and include folder because the pkgconfig is responsible for this.

Note: 6.9.10-14 is the latest version of imagemagick@6, but feel free to change it if you need to use a different version

excid3
  • 1,658
  • 15
  • 31
wlads
  • 767
  • 7
  • 9
5
$ brew remove imagemagick && brew install imagemagick

$ brew uninstall pkg-config && brew install pkg-config
$ brew unlink pkg-config && brew link pkg-config

$ gem install rmagick
Yury Lebedev
  • 3,985
  • 19
  • 26
5

I don't have the reputation yet to leave this as a comment improving another answer, but @Evgeniy28's answer worked for me on Sierra only after also installing pkg-config, which doesn't come installed by default on a fresh Sierra machine.

So:

brew install pkg-config
brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force

Success:

$ gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
Parsing documentation for rmagick-2.16.0
Installing ri documentation for rmagick-2.16.0
Done installing documentation for rmagick after 4 seconds
1 gem installed
Andrew Brown
  • 63
  • 1
  • 5
5

Please follow below and change some part according to your need.

brew unlink imagemagick
brew install imagemagick@6 && brew link imagemagick@6 --force
export PKG_CONFIG_PATH=/usr/local/Cellar/imagemagick@6/6.9.9-24/lib/pkgconfig
gem install rmagick -v '2.15.4'
Lalit Kumar Maurya
  • 5,475
  • 2
  • 35
  • 29
4

With 7.0.7-1 you can create an symbolic link, but it compilation will fail latter.

cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagickCore/ magick
Community
  • 1
  • 1
territorial
  • 145
  • 1
  • 6
3

Here is how I solved (after lots of tries and fail) on macOS High Sierra 10.13.3 with Homebrew:

  1. it seems that RMagick 2.16.0 is not compatible with the newest version of ImageMagick (Version 7): http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. I uninstalled imagemagick: brew uninstall imagemagick
  3. Then I installed Imagemagick with this formula: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

If you have already installed an old version Imagemagick, this should work: https://stackoverflow.com/a/41674363

iGian
  • 11,023
  • 3
  • 21
  • 36
3

There's no need to link or unlink anything, following the instructions from the brew install script helps:

brew install imagemagick@6
LDFLAGS="-L/usr/local/opt/imagemagick@6/lib" CPPFLAGS="-I/usr/local/opt/imagemagick@6/include" PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig" gem install rmagick
januszm
  • 1,166
  • 13
  • 24
2

Am working on an legacy Ruby on Rails application (Ruby 2.1.x / Rails 3.2.x) for a client and have needed to get it running on MacOS Big Sur.

After rmagick failed wth the following output:

    /Users/robbyrussell/.rbenv/versions/2.1.0/bin/ruby extconf.rb
checking for clang... yes
checking for Magick-config... no
checking for pkg-config... yes
checking for outdated ImageMagick version (<= 6.4.9)... no
checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
checking for Ruby version >= 1.8.5... yes
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no

Can't install RMagick 2.16.0. 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=/Users/robbyrussell/.rbenv/versions/2.1.0/bin/ruby

extconf failed, exit code 1

Gem files will remain installed in /Users/robbyrussell/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/rmagick-2.16.0 for inspection.
Results logged to /Users/robbyrussell/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-20/2.1.0-static/rmagick-2.16.0/gem_make.out

My next step to solve this was to instruct Bundler to pass some flags to the compiler:

bundle config build.rmagick -- --with-cflags=-Wno-implicit-function-declaration

via Homebrew, I ran the following:

% brew install imagemagick@6

Then following the guidance that is output, I ran:

% export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig"

% bundle install
.....
Fetching rmagick 2.16.0
Installing rmagick 2.16.0 with native extensions

Voila, I'm now able to run this application locally.

1

Got same error for alpine 3.9 image build. It comes with ImageMagick 7.0.8.38-r0

To fix that you either use alpine 3.5 with ImageMagick 6.9.6.8-r1:

FROM alpine:3.5

Or install ImageMagick 6.9.6.8-r1 with package repository for 3.5:

RUN apk add imagemagick-dev=6.9.6.8-r1 --repository http://dl-3.alpinelinux.org/alpine/v3.5/main/

There is an open issue in rmagick repo regarding failed builds for ImageMagick 7.0.x. so hopefully it will be fixed soon.

Martin
  • 4,042
  • 2
  • 19
  • 29
0

Something was severely wrong on my system, so badly that it was completely f*d up, but I was finally to able to install RMagick for Ruby 1.8.7 again after I installed

The installation of a new Ruby version with RVM rvm install 1.8.7 also installed a new GCC compiler: it removed an older GCC version 4.6 and installed GCC version 4.9. Apparently GCC was not able to find the right headers despite pkg-config.

Community
  • 1
  • 1
0x4a6f4672
  • 27,297
  • 17
  • 103
  • 140
0

First, you don't need to uninstall imagemagick if it has a 6.x installed, like shown below. You can see the current "main" is 7.0.7-8 but 6.9.1-10 is still there.

$ brew info imagemagick                                                            
imagemagick: stable 7.0.7-8 (bottled), HEAD
Tools and libraries to manipulate images in many formats
https://www.imagemagick.org/
/usr/local/Cellar/imagemagick/6.9.1-10 (1,450 files, 17.5MB)
  Poured from bottle on 2015-07-26 at 09:10:58
/usr/local/Cellar/imagemagick/7.0.6-9 (1,522 files, 22.8MB)
  Poured from bottle on 2017-08-21 at 14:44:16
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula

If you don't have an old 6.x version, then install imagemagick@6.

Second, do not force link imagemagick, especially not 6. EDIT: See ¹
You need to set PKG_CONFIG_PATH in addition to the --with-opt-* flags.

This works for me on High Sierra with aforementioned brew setup on Ruby 1.9.3-p551:

PKG_CONFIG_PATH=/usr/local/Cellar/imagemagick/6.9.1-10/lib/pkgconfig  \
  gem install rmagick -v '2.16.0' -- \
  --with-opt-lib=/usr/local/Cellar/imagemagick/6.9.1-10/lib/ \
  --with-opt-include=/usr/local/Cellar/imagemagick/6.9.1-10/include/ImageMagick-6/

Building ri docs fails, but those are inconsequential.

¹: Building works, the dylib path RMagick is searching is wrong though. Raised Issue #278 to clarify if this can be fixed. Otherwise manual symlinking of libMagickWand etc is necessary. Might still be safer to manually link the specific libraries than a brew link --force though.

mmlac
  • 1,091
  • 1
  • 9
  • 24
0

I fully explain the installation process in ImageMagick install in centos .

anyway ...
after install Install Imagick & ImageMagick-devel & ImageMagick PHP library like below:

# yum install ImageMagick
# yum install ImageMagick-devel
# pecl install Imagick

go to /usr/include

cd /usr/include

Important: copy ImageMagick folder from "/usr/include" to "/usr/local/include" for ImageMagick find "MagickWand.h"

I tested this change on imagick-3.4.3(ImageMagick-7) and centos 6.5 and php56 and works perfectly ...

If you have already installed "ImageMagick" several times, first remove all of them and find "ImageMagick" & "imagick" folders and clean all of them and continue the installation process with this change.

Use the following command to find a file or folder:

find / -name 'ImageMagick*'
find / -name 'imagick*'

and continue your installation
before below lines don't forget: go to "php.ini" find "disable_functions" and clean "proc_open,popen,proc_close" becuase make imagick needs these functions, after complete installation you can add this functions to your "disable_functions" on "php.ini" file.

# phpize
# ./configure --with-php-config=/usr/local/php56/bin/php-config 
...

Good luck...

Ferhad Konar
  • 434
  • 1
  • 7
  • 9
0

For Ubuntu version > 12 and not using homebrew,

wget http://www.imagemagick.org/download/<required_imagemagick_version>
tar -xvf <path_to_your_downloaded_file>.tar.gz

If you are getting '7z' files instead of 'tar.gz' files in the wget link, then

7z x <path_to_your_downloaded_file>.7z
cd <path_to_your_downloaded_file>/
make
./configure
sudo make install
sudo ldconfig /usr/local/lib

Then you can resume your bundler for RMagick.

remonses
  • 402
  • 1
  • 4
  • 17