Instalação do RMagick: Não foi possível encontrar o MagickWand.h

164

Atualizar o RMagick e o Imagemagick é uma experiência dolorosa. Atualizei a versão Imagemagick no meu mac (MacOS El Capitan versão 10.11.5) com homebrew para um projeto no Ruby 2.3 para6.9.5-9

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

Agora, um projeto mais antigo no Ruby 1.8.7 se recusa a trabalhar com a mensagem de erro "esta instalação do RMagick foi configurada com o ImageMagick 6.8.9, mas o ImageMagick 6.9.5-9 está em uso". Desinstalei o "rmagick", mas ele não pode ser instalado novamente

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

E se não puder ser instalado, o aplicativo inteiro não poderá ser iniciado. Tentei todas as respostas a partir daqui e nenhuma delas funciona no MacOS :-( Reinstalei o imagemagick e o pkg-config com homebrew e tentei várias versões do RMagick sem êxito. 2.16.0 é a versão mais recente do RMagick atualmente.

O MagicWand parece ser usado na versão ImageMagick> 6.9, e pode ser encontrado na 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

Ele não funciona, mesmo que eu especifique esses caminhos durante a instalação da gem (mesmo erro acima) :-(

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

ATUALIZAR:

O erro ocorre apenas no Ruby 1.8.7, é possível instalar o RMagick for Ruby 2.0 e Ruby 2.3. O Ruby 1.8.7 e o ImageMagick 6.9.5 não parecem ser compatíveis.

  • Ruby 1.8.7 x
  • Ruby 2.0.0 ✓
  • Ruby 2.3.1 ✓
0x4a6f4672
fonte
O que é isso, um jogo de Harry Potter?
Expiação limitada

Respostas:

461

Para resolver o problema no Mac OSX Sierra, High Sierra, El Capitan, Mojave e Catalina , você pode fazer o seguinte:

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

imagemagick@6é keg-only, então você precisará forçar a vinculação.

KM Rakibul Islam
fonte
7
Teve que desvincular manualmente brew unlink imagemagickantes do link - mas funcionou. Muito obrigado.
Haris Krajina
2
Uau. Super porcaria que eu não posso ter a última versão do ImageMagick, mas isso funciona. Obrigado!
Fomentia
1
Funciona perfeitamente com Ubuntu Ubuntu 16.04.3 LTS
violentr
55

Eu tive esse mesmo problema com o ImageMagick 7.0.4-4 . A correção correta é instalar imagemagick@6. Achei https://github.com/Homebrew/homebrew-core/pull/8756 útil se você excluiu acidentalmente o seu imagemagick@6ou nunca o instalou em primeiro lugar.

Raymond Cox
fonte
UAU! Muito obrigado por esse link. Eu estava desperdiçado quase metade do meu dia de trabalho tentando consertar isso.
precisa saber é
14
Observe que o imagemagick @ 6 é somente barril, portanto você precisará forçar a vinculação. brew install imagemagick@6 && brew link imagemagick@6 --forceresolvido para mim
Darren Cheng
1
Incrível, felicidades! Isso funcionou para mim:brew install --force imagemagick@6 && brew link imagemagick@6 --force
Bella
1
Sim, a instalação da versão anterior (6x) definitivamente a corrigia. O problema é que a estrutura de pastas dos arquivos imagemagick foi alterada na versão 7x. E durante a instalação do gem que está assumindo a estrutura de pastas que 6x tem
Prakash Raman
Infelizmente, reverter para o imagemagick @ 6 não funciona para mim. Mesmo depois de reinstalar e religação eu ainda receber esta mensagem ao tentar 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
fonte
1
-1 porque você força o link sem motivo nem diz a ninguém por que essa é uma má idéia para começar. Veja minha resposta para fazê-lo "corretamente" no sentido de Homebrew e não MacPorts.
mmlac
21

Antes de tudo, desvincule o imagemagick instalado que não foi instalado corretamente no mac high sierra mais recente usando.

brew unlink imagemagick

em seguida, instale o imagemagic6 mais recente usando o comando abaixo

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

Em seguida, instale gem rmagick usando o comando abaixo

gem install rmagick 

Funcionará perfeitamente bem.

Ali Hassan Mirza
fonte
16

Sim, este resolve meu problema:

MacOS X Sierra:

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

Muitas coisas mudaram no ImageMagick 7 como este caminho :, include/.../wand e wand/MagickWand.hestão conectadas com a gema rmagic no momento. No meu caso, não foi possível atualizar a gema, pois o projeto é bastante antigo. Então acabei instalando uma versão mais antiga do ImageMagic.

Você pode instalar a versão mais recente do 6.xx:

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

Você também pode fixá-lo para uso posterior: brew pin imagemagick

Peter Toth - Toma
fonte
1
Trabalhou para mim: Mac OS 10.12.X. Instalei o ImageMagick 7 primeiro e tive problemas com a instalação do rails gem rmagick.
Simon Franzen
11

Algo mudou com o ImageMagick 7.0.4-4 para mim. wand/MagickWand.hnão foi mais possível encontrar:

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

Eu ainda tinha o ImageMagick 6.9.7-3 no meu sistema e mudei de volta com

% 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

Posteriormente eu poderia instalar rmagicksem problemas:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Holger Frohloff
fonte
Você poderia encontrar alguma solução? Estou enfrentando os mesmos problemas com você.
Kemal Akkoyun
como eu disse. voltar para o imagemagick 6.9 corrige isso para mim.
Holger Frohloff
1
Obrigado, peguei e consertei, de acordo com a sua sugestão. Mas o que eu estava tentando perguntar se você resolveu o problema usando a versão mais recente do ImageMagick? Encontrei o problema relacionado github.com/rmagick/rmagick/issues/256, que também sugeria fazer o downgrade do ImageMagick como você. Então, obrigado novamente.
precisa saber é o seguinte
Você é muito bem-vindo. Ainda não resolvi o problema usando a versão 7.x. Eu acho que haverá uma correção bastante cedo. Veremos. :)
Holger Frohloff
6

O RMagick depende de uma versão desatualizada do imagemagick, versão 6. (veja abaixo) O Homebrew oferece isso como um pacote somente barril, com o qual você pode instalar:

brew install imagemagick@6

A saída da compilação incluirá uma seção Advertências (também disponível em brew info imagemagick@6se você limpou a saída):

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

Ao invés da força de ligação, que tem o potencial de causar problemas com outro software que não suporta as versões mais recentes do imagemagick, você pode usar o sugerido exports para fazer a jóia RMagick pegar a versão antiga enquanto ele constrói:

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. ajudar a contribuir com o esforço de atualização, se você conhece Ruby e C!
Phil Calvin
fonte
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
fonte
obrigado pelas dicas e sugestões, infelizmente isso não ajudou :-(
0x4a6f4672
1
Essa resposta foi a única que mencionou pkg-confige funcionou.
21416 Jason Jason
O pkg-config é a chave para o sucesso. Muito obrigado.
Michael Johann
5

Ainda não tenho reputação de deixar isso como comentário, melhorando outra resposta, mas a resposta de @ Evgeniy28 funcionou para mim no Sierra somente depois de instalar o pkg-config, que não é instalado por padrão em uma nova máquina Sierra.

Assim:

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

Sucesso:

$ 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
fonte
Trabalhou para mim, Sierra 10.12.6
Ivan Danci 11/11
5

Siga abaixo e altere algumas partes de acordo com sua necessidade.

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

Instale o imagemagick versão 6 porque a versão 7 não é compatível:

$ brew install imagemagick@6

Não deve vincular - force a versão mais antiga, pois isso mudará os binários em seu caminho e o bem brew doctorreclamará.

Faça referência aos cabeçalhos e bibliotecas da versão 6 que foram instalados ao construir a extensão nativa da gem:

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

Nota: Trabalhou para mim sem indicar a pasta lib e include porque o pkgconfig é responsável por isso.

Nota: 6.9.10-14 é a versão mais recente do imagemagick @ 6, mas fique à vontade para alterá-lo se precisar usar uma versão diferente.

wlads
fonte
3

Aqui está como eu resolvi (depois de muitas tentativas e falhas) no macOS High Sierra 10.13.3 com o Homebrew:

  1. parece que o RMagick 2.16.0 não é compatível com a versão mais recente do ImageMagick (Versão 7): http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. Eu desinstalei o imagemagick: brew uninstall imagemagick
  3. Em seguida, instalei o Imagemagick com esta fórmula: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

Se você já instalou uma versão antiga do Imagemagick, isso deve funcionar: https://stackoverflow.com/a/41674363

iGian
fonte
2

na versão 7.0.7-1, você pode criar um link simbólico, mas a compilação falhará posteriormente.

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

Não há necessidade de vincular ou desvincular nada, seguir as instruções do script de instalação do brew ajuda:

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

Obteve o mesmo erro para a construção de imagem alpina 3.9. Ele vem com o ImageMagick 7.0.8.38-r0

Para corrigir isso, use Alpine 3.5 com o ImageMagick 6.9.6.8-r1 :

FROM alpine:3.5

Ou instale o ImageMagick 6.9.6.8-r1 com o repositório de pacotes para 3.5:

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

Há um problema em aberto no rmagick repo referente às compilações com falha do ImageMagick 7.0.x. espero que seja corrigido em breve.

Martin Zinovsky
fonte
0

Algo estava gravemente errado no meu sistema, tão ruim que estava completamente danificado, mas finalmente consegui instalar o RMagick for Ruby 1.8.7 novamente após a instalação

A instalação de uma nova versão do Ruby com o RVM rvm install 1.8.7também instalou um novo compilador GCC: ele removeu uma versão 4.6 do GCC mais antiga e instalou a versão 4.9 do GCC. Aparentemente, o GCC não conseguiu encontrar os cabeçalhos corretos, apesar do pkg-config.

0x4a6f4672
fonte
0

Explico completamente o processo de instalação no ImageMagick install in centos .

de qualquer maneira ...
após a instalação Instale a biblioteca PHP Imagick & ImageMagick-devel & ImageMagick, como abaixo:

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

vá para / usr / include

cd /usr/include

Importante: copie a pasta ImageMagick de "/ usr / include" para "/ usr / local / include" para o ImageMagick, localize "MagickWand.h"

Eu testei essa alteração no imagick-3.4.3 (ImageMagick-7) e centos 6.5 e php56 e funciona perfeitamente ...

Se você já instalou o "ImageMagick" várias vezes, primeiro remova todos eles e localize as pastas "ImageMagick" e "imagick", limpe-os e continue o processo de instalação com essa alteração.

Use o seguinte comando para encontrar um arquivo ou pasta:

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

e continue sua instalação
antes das linhas abaixo, não se esqueça: vá para "php.ini" encontre "disable_functions" e limpe "proc_open, popen, proc_close" porque o imagick precisa dessas funções, após a instalação completa, você pode adicionar essas funções ao seu " disable_functions "no arquivo" php.ini ".

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

Boa sorte...

Ferhad Konar
fonte
0

Para a versão Ubuntu> 12 e não usando homebrew,

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

Se você estiver recebendo arquivos '7z' em vez de arquivos 'tar.gz' no link wget,

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

Em seguida, você pode retomar seu empacotador para o RMagick.

remonses
fonte
-1

Primeiro, você não precisa desinstalar o imagemagick se o 6.x estiver instalado, como mostrado abaixo. Você pode ver que o atual "principal" está, 7.0.7-8mas 6.9.1-10ainda está lá.

$ 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

Se você não tem uma versão antiga 6.x, em seguida, instalar imagemagick @ 6.

Segundo, não force o link imagemagick, especialmente o 6. EDIT: Consulte ¹
Você precisa definir PKG_CONFIG_PATH além dos sinalizadores --with-opt- *.

Isso funciona para mim no High Sierra com a configuração de fermentação mencionada no 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/

A construção de documentos falhados falha, mas eles são irrelevantes.

Nota: A construção funciona, o caminho do dylib que o RMagick está pesquisando está errado. Levantou a edição nº 278 para esclarecer se isso pode ser corrigido. Caso contrário, é necessário o symlinking manual do libMagickWand etc. Ainda pode ser mais seguro vincular manualmente as bibliotecas específicas do que um brew link --forcepensamento.

mmlac
fonte