Instalación de RMagick: no se puede encontrar MagickWand.h

164

Actualizar RMagick e Imagemagick es una experiencia dolorosa. He actualizado la versión de Imagemagick en mi Mac (MacOS El Capitan Versión 10.11.5) con homebrew para un proyecto en Ruby 2.3 a6.9.5-9

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

Ahora, un proyecto anterior en Ruby 1.8.7 se niega a funcionar con el mensaje de error "esta instalación de RMagick se configuró con ImageMagick 6.8.9 pero ImageMagick 6.9.5-9 está en uso". Por lo tanto, desinstalé "rmagick", pero no se puede volver a instalar

$ 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. 

Y si no se puede instalar, no se puede iniciar toda la aplicación. Probé todas las respuestas desde aquí , y ninguna de ellas funciona en MacOS :-( Reinstalé imagemagick y pkg-config con homebrew, e intenté varias versiones de RMagick sin éxito. 2.16.0 es la última versión de RMagick actualmente.

MagicWand parece usarse en la versión ImageMagick> 6.9, y se puede encontrar en la máquina:

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

No funciona incluso si especifico estas rutas durante la instalación de la gema (el mismo error que el anterior) :-(

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

ACTUALIZAR:

El error solo ocurre para Ruby 1.8.7, es posible instalar RMagick para Ruby 2.0 y Ruby 2.3. Ruby 1.8.7 e ImageMagick 6.9.5 no parecen ser compatibles.

  • Rubí 1.8.7 x
  • Ruby 2.0.0 ✓
  • Ruby 2.3.1 ✓
0x4a6f4672
fuente
¿Qué es esto, un juego de Harry Potter?
Expiación limitada el

Respuestas:

461

Para resolver el problema en Mac OSX Sierra, High Sierra, El Capitan, Mojave y Catalina , puede hacer lo siguiente:

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

imagemagick@6es decir keg-only, así que tendrás que forzar el enlace.

KM Rakibul Islam
fuente
77
Tuve que desvincular manualmente brew unlink imagemagickantes del enlace, pero funcionó. Muchas gracias.
Haris Krajina
2
Guau. Super apesta que no puedo tener la última versión de ImageMagick, pero esto funciona. ¡Gracias!
Fomentia
1
Funciona perfectamente con Ubuntu Ubuntu 16.04.3 LTS
violentr
55

Tuve este mismo problema con ImageMagick 7.0.4-4 . La solución adecuada es instalar imagemagick@6. Encontré https://github.com/Homebrew/homebrew-core/pull/8756 útil si eliminó accidentalmente imagemagick@6o nunca lo instaló en primer lugar.

Raymond Cox
fuente
¡GUAUU! Muchas gracias por ese enlace. Perdí casi la mitad de mi día de trabajo tratando de arreglar esto.
kalehv
14
Tenga en cuenta que imagemagick @ 6 es solo de barril, por lo que deberá forzar la vinculación. brew install imagemagick@6 && brew link imagemagick@6 --forcelo resolvió para mí
Darren Cheng
1
Impresionante, salud! Esto funcionó para mí:brew install --force imagemagick@6 && brew link imagemagick@6 --force
Bella
1
Sí, la instalación de la versión anterior (6x) definitivamente lo arreglaría. El problema es que la estructura de carpetas de los archivos de imagemagick ha cambiado en la versión 7x. Y mientras instala la gema, asume la estructura de carpetas que tiene 6x
Prakash Raman
Lamentablemente, volver a imagemagick @ 6 no funciona para mí. Incluso después de reinstalar y volver a vincular, sigo recibiendo este mensaje cuando intento instalar 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
32

macOs Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
Evgeniy28
fuente
1
-1 porque forzas el enlace sin ningún motivo ni le dices a nadie por qué es una mala idea para empezar. Vea mi respuesta para hacerlo "correctamente" en el sentido de Homebrew y no de MacPorts.
mmlac
21

En primer lugar, desvincule su imagen mágica instalada que no se instaló correctamente en la última mac high sierra mediante el uso.

brew unlink imagemagick

luego instale el último imagemagic6 usando el siguiente comando

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

Luego instale gem rmagick usando el siguiente comando

gem install rmagick 

Funcionará perfectamente bien.

Ali Hassan Mirza
fuente
16

sí, este resuelve mi problema:

MacOS X Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
BMA88
fuente
14

Muchas cosas han cambiado en ImageMagick 7, como este camino: include/.../wand y wand/MagickWand.hestá conectado en la gema mágica en este momento. En mi caso, no fue posible actualizar la gema ya que el proyecto es bastante antiguo. Así que terminé instalando una versión anterior de ImageMagic.

Puede instalar la última versión de 6.xx:

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

También puede anclarlo para su uso posterior: brew pin imagemagick

Peter Toth - Toma
fuente
1
Funcionó para mí: Mac OS 10.12.X. Primero instalé ImageMagick 7 y tuve problemas con la instalación de los rieles gem rmagick.
Simon Franzen
11

Algo cambió con ImageMagick 7.0.4-4 para mí. wand/MagickWand.hno se pudo encontrar más:

% 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.

Todavía tenía ImageMagick 6.9.7-3 en mi sistema y cambié de nuevo con

% 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

Luego pude instalar rmagicksin problemas:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Holger Frohloff
fuente
¿Puedes encontrar alguna solución? Estoy experimentando los mismos problemas contigo.
Kemal Akkoyun
como ya he dicho. volver a imagemagick 6.9 lo soluciona por mí.
Holger Frohloff
1
Gracias, lo conseguí y lo arreglé, según su sugerencia. Pero, ¿qué estaba tratando de preguntar si lo resolvió con la última versión de ImageMagick? Luego encontré el problema relacionado github.com/rmagick/rmagick/issues/256 que también sugiere rebajar ImageMagick como lo hiciste. Así que gracias de nuevo.
Kemal Akkoyun
De nada. Todavía no resolví el problema usando la versión 7.x. Supongo que habrá una solución bastante pronto. Ya veremos. :)
Holger Frohloff
6

RMagick depende de una versión desactualizada de imagemagick, versión 6. (ver más abajo) Homebrew ofrece esto como un paquete de solo barril, que puede instalar con:

brew install imagemagick@6

La salida de compilación incluirá una sección de Advertencias (también disponible desde brew info imagemagick@6si borró la salida):

==> 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"

En lugar de vincular-fuerza, que tiene el potencial de causar problemas con otro software que no admite las nuevas versiones de ImageMagick, se puede utilizar el sugerido exports para hacer la gema RMagick recoger la versión antigua, mientras que se basa:

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. ¡ Ayuda a contribuir al esfuerzo de actualización si conoces a Ruby y C!
Phil Calvin
fuente
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
fuente
gracias por los consejos y sugerencias, desafortunadamente no ayudó :-(
0x4a6f4672
1
Esta respuesta fue la única que mencionó pkg-configy funcionó.
Jason Kim
pkg-config es la clave del éxito. Muchas gracias.
Michael Johann
5

Todavía no tengo la reputación de dejar esto como un comentario que mejora otra respuesta, pero la respuesta de @ Evgeniy28 funcionó para mí en Sierra solo después de instalar pkg-config, que no viene instalado por defecto en una máquina Sierra nueva.

Entonces:

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

Éxito:

$ 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
fuente
Trabajó para mí, Sierra 10.12.6
Ivan Danci
5

Siga a continuación y cambie algunas partes según sus necesidades.

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
fuente
4

Instale imagemagick versión 6 porque la versión 7 no es compatible:

$ brew install imagemagick@6

No debe vincular: forzar la versión anterior porque esto cambiará los binarios en su camino y los buenos brew doctorse quejarán.

Consulte los encabezados y bibliotecas de la versión 6 que se instaló al construir la extensión nativa de la gema:

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

Nota: funcionó para mí sin indicar la carpeta lib e include porque pkgconfig es responsable de esto.

Nota: 6.9.10-14 es la última versión de imagemagick @ 6, pero no dude en cambiarla si necesita usar una versión diferente

wlads
fuente
3

Así es como lo resolví (después de muchos intentos y fallas) en macOS High Sierra 10.13.3 con Homebrew:

  1. parece que RMagick 2.16.0 no es compatible con la versión más reciente de ImageMagick (Versión 7): http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. Desinstalé imagemagick: brew uninstall imagemagick
  3. Luego instalé Imagemagick con esta fórmula: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

Si ya ha instalado una versión anterior de Imagemagick, esto debería funcionar: https://stackoverflow.com/a/41674363

iGian
fuente
2

en la versión 7.0.7-1 puede crear un enlace simbólico, pero su compilación fallará más adelante.

cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagicCore/ magick
territorial
fuente
2

No hay necesidad de vincular o desvincular nada, seguir las instrucciones del script de instalación brew ayuda:

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
fuente
1

Obtuve el mismo error para la construcción de imágenes alpine 3.9. Viene con ImageMagick 7.0.8.38-r0

Para solucionarlo, use alpine 3.5 con ImageMagick 6.9.6.8-r1 :

FROM alpine:3.5

O instale ImageMagick 6.9.6.8-r1 con el repositorio de paquetes para 3.5:

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

Hay un problema abierto en el repositorio de rmagick con respecto a las compilaciones fallidas para ImageMagick 7.0.x. así que espero que se arregle pronto.

Martin Zinovsky
fuente
0

Algo estaba muy mal en mi sistema, tan mal que estaba completamente jodido, pero finalmente pude instalar RMagick para Ruby 1.8.7 nuevamente después de instalar

La instalación de una nueva versión de Ruby con RVM rvm install 1.8.7también instaló un nuevo compilador de GCC: eliminó una versión anterior de GCC 4.6 e instaló la versión 4.9 de GCC. Aparentemente, GCC no pudo encontrar los encabezados correctos a pesar de pkg-config.

0x4a6f4672
fuente
0

Explico completamente el proceso de instalación en ImageMagick install en centos .

de todos modos ...
después de instalar Instale la biblioteca PHP Imagick & ImageMagick-devel & ImageMagick como se muestra a continuación:

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

ir a / usr / include

cd /usr/include

Importante: copie la carpeta ImageMagick de "/ usr / include" a "/ usr / local / include" para ImageMagick encuentre "MagickWand.h"

Probé este cambio en imagick-3.4.3 (ImageMagick-7) y centos 6.5 y php56 y funciona perfectamente ...

Si ya ha instalado "ImageMagick" varias veces, primero quítelos todos y busque las carpetas "ImageMagick" e "imagick" y límpielas todas y continúe el proceso de instalación con este cambio.

Use el siguiente comando para buscar un archivo o carpeta:

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

y continúe con la instalación
antes de las líneas siguientes, no se olvide: vaya a "php.ini", encuentre "disable_functions" y limpie "proc_open, popen, proc_close", ya que imagick necesita estas funciones, después de la instalación completa puede agregar estas funciones a su " disable_functions "en el archivo" php.ini ".

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

Buena suerte...

Ferhad Konar
fuente
0

Para la versión de Ubuntu> 12 y que no usa homebrew,

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

Si obtiene archivos '7z' en lugar de archivos 'tar.gz' en el enlace wget, entonces

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

Luego puede reanudar su paquete para RMagick.

remontas
fuente
-1

Primero, no necesita desinstalar imagemagick si tiene un 6.x instalado, como se muestra a continuación. Puede ver que el "principal" actual es 7.0.7-8pero 6.9.1-10sigue ahí.

$ 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

Si no tiene una versión anterior de 6.x, entonces instalar ImageMagick @ 6.

En segundo lugar, no fuerce la imagen del enlace , especialmente no 6. EDITAR: Ver ¹
Debe configurar PKG_CONFIG_PATH además de las banderas --with-opt- *.

Esto funciona para mí en High Sierra con la configuración de preparación antes mencionada en 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/

La construcción de documentos no funciona, pero son intrascendentes.

¹: La construcción funciona, la ruta dylib que RMagick está buscando es incorrecta. Problema planteado # 278 para aclarar si esto se puede solucionar. De lo contrario, es necesario el enlace manual de libMagickWand, etc. Todavía podría ser más seguro vincular manualmente las bibliotecas específicas que un brew link --forcepensamiento.

mmlac
fuente