Installation de RMagick: impossible de trouver MagickWand.h

164

La mise à jour de RMagick et Imagemagick est une expérience douloureuse. J'ai mis à jour la version Imagemagick sur mon mac (MacOS El Capitan Version 10.11.5) avec homebrew pour un projet dans Ruby 2.3 à6.9.5-9

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

Maintenant, un projet plus ancien dans Ruby 1.8.7 refuse de fonctionner avec le message d'erreur "cette installation de RMagick a été configurée avec ImageMagick 6.8.9 mais ImageMagick 6.9.5-9 est en cours d'utilisation". J'ai donc désinstallé "rmagick", mais il ne peut pas être réinstallé

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

Et s'il ne peut pas être installé, toute l'application ne peut pas être démarrée. J'ai essayé toutes les réponses d' ici , et aucune d'elles ne fonctionne sur MacOS :-( J'ai réinstallé imagemagick et pkg-config avec homebrew, et essayé diverses versions de RMagick sans succès. 2.16.0 est la dernière version de RMagick actuellement.

MagicWand semble être utilisé dans la version ImageMagick> 6.9, et il peut être trouvé sur la 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

Cela ne fonctionne pas même si je spécifie ces chemins lors de l'installation du gem (même erreur que ci-dessus) :-(

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

METTRE À JOUR:

L'erreur se produit uniquement pour Ruby 1.8.7, il est possible d'installer RMagick pour Ruby 2.0 et Ruby 2.3. Ruby 1.8.7 et ImageMagick 6.9.5 ne semblent pas compatibles.

  • Rubis 1,8,7 x
  • Ruby 2.0.0 ✓
  • Rubis 2.3.1 ✓
0x4a6f4672
la source
Qu'est-ce que c'est, un jeu Harry Potter?
Expiation limitée le
1
@LimitedAtonement apparemment oui :-)
0x4a6f4672

Réponses:

461

Pour résoudre le problème dans Mac OSX Sierra, High Sierra, El Capitan, Mojave et Catalina , vous pouvez effectuer les opérations suivantes:

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

imagemagick@6 est keg-only , vous devrez donc forcer la liaison.

KM Rakibul Islam
la source
7
J'ai dû dissocier manuellement brew unlink imagemagickavant le lien - mais cela a fonctionné. Merci beaucoup.
Haris Krajina
2
Sensationnel. Super craint que je ne puisse pas avoir la dernière version d'ImageMagick, mais cela fonctionne. Merci!
Fomentia du
1
Fonctionne parfaitement avec Ubuntu Ubuntu 16.04.3 LTS
violentr
N'a pas aidé. Toujours l' Wanderreur sur macOS.
Nakilon il y a
55

J'ai eu ce même problème avec ImageMagick 7.0.4-4 . Le correctif approprié consiste à installer imagemagick@6. J'ai trouvé https://github.com/Homebrew/homebrew-core/pull/8756 utile si vous avez accidentellement supprimé votre imagemagick@6ou si vous ne l'avez jamais installé en premier lieu.

Raymond Cox
la source
HOU LA LA! Merci beaucoup pour ce lien. J'ai perdu presque la moitié de ma journée de travail à essayer de résoudre ce problème.
kalehv
14
Notez que imagemagick @ 6 est uniquement en fût, vous devrez donc forcer la liaison. brew install imagemagick@6 && brew link imagemagick@6 --forcerésolu pour moi
Darren Cheng
1
Génial, bravo! Cela a fonctionné pour moi:brew install --force imagemagick@6 && brew link imagemagick@6 --force
Bella le
1
Oui, installer la version précédente (6x) résoudrait définitivement le problème. Le problème est que la structure des dossiers des fichiers imagemagick a changé dans la version 7x. Et lors de l'installation du joyau, il suppose la structure de dossiers que 6x a
Prakash Raman
Revenir à imagemagick @ 6 ne fonctionne malheureusement pas pour moi. Même après la réinstallation et la reconnexion, je reçois toujours ce message lorsque j'essaye d'installer 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
la source
1
-1 parce que vous forcez le lien sans raison et ne dites à personne pourquoi c'est une mauvaise idée au départ. Voir ma réponse pour le faire "correctement" dans le sens de Homebrew et non de MacPorts.
mmlac
21

Tout d'abord, dissociez votre imagemagick installé qui n'a pas été correctement installé dans le dernier mac high sierra en utilisant.

brew unlink imagemagick

puis installez le dernier imagemagic6 en utilisant la commande ci-dessous

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

Ensuite, installez gem rmagick en utilisant la commande ci-dessous

gem install rmagick 

Cela fonctionnera parfaitement bien.

Ali Hassan Mirza
la source
16

yah celui-ci résout mon problème:

MacOS X Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
BMA88
la source
14

Beaucoup de choses ont changé dans ImageMagick 7 comme ce chemin:, include/.../wand etwand/MagickWand.h :, est câblé dans le gem rmagic pour le moment. Dans mon cas, il n'a pas été possible de mettre à jour la gemme car le projet est assez ancien. J'ai donc fini par installer une ancienne version d'ImageMagic.

Vous pouvez installer la dernière version à partir de 6.xx:

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

Vous pouvez également l'épingler pour une utilisation ultérieure: brew pin imagemagick

Peter Toth - Toma
la source
1
A travaillé pour moi: Mac OS 10.12.X. J'ai d'abord installé ImageMagick 7 et j'ai eu des problèmes avec l'installation des rails gem rmagick.
Simon Franzen
11

Quelque chose a changé avec ImageMagick 7.0.4-4 pour moi. wand/MagickWand.hne pouvait plus être trouvé:

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

J'avais toujours ImageMagick 6.9.7-3 sur mon système et je l'ai changé avec

% 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

Ensuite, j'ai pu installer rmagicksans problème:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Holger Frohloff
la source
Pouvez-vous trouver des solutions? Je rencontre les mêmes problèmes avec vous.
Kemal Akkoyun
comme j'ai dit. le retour à imagemagick 6.9 le corrige pour moi.
Holger Frohloff
1
Merci, je l'ai obtenu et je l'ai corrigé, selon votre suggestion. Mais qu'est-ce que j'essayais de demander si vous l'avez résolu en utilisant la dernière version d'ImageMagick? Ensuite, j'ai trouvé le problème associé github.com/rmagick/rmagick/issues/256 qui suggère également de rétrograder ImageMagick comme vous l'avez fait. Alors merci encore.
Kemal Akkoyun
Vous êtes les bienvenus. Je n'ai pas encore résolu le problème avec la version 7.x. Je suppose qu'il y aura un correctif assez bientôt. Nous verrons. :)
Holger Frohloff
6

RMagick dépend d'une version obsolète d'imagemagick, la version 6. (voir ci-dessous) Homebrew propose cela sous forme de package uniquement en fût, que vous pouvez installer avec:

brew install imagemagick@6

La sortie de la construction comprendra une section Avertissement (également disponible à partir de brew info imagemagick@6si vous avez effacé la sortie):

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

Plutôt que la force de liaison, qui a le potentiel de causer des problèmes avec d' autres logiciels qui ne supporte les versions les plus récentes de ImageMagick, vous pouvez utiliser le suggéré exportde faire le joyau RMagick ramasser l'ancienne version alors qu'il construit:

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. Allez aider à contribuer à l'effort de mise à niveau si vous connaissez Ruby et C!
Phil Calvin
la source
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
la source
merci pour les conseils et suggestions, malheureusement cela n'a pas aidé :-(
0x4a6f4672
1
Cette réponse était la seule qui ait été mentionnée pkg-configet cela a fonctionné.
Jason Kim
pkg-config est la clé du succès. Merci beaucoup.
Michael Johann
5

Je n'ai pas encore la réputation de laisser cela comme un commentaire améliorant une autre réponse, mais la réponse de @ Evgeniy28 n'a fonctionné pour moi sur Sierra qu'après avoir également installé pkg-config, qui n'est pas installé par défaut sur une nouvelle machine Sierra.

Alors:

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

Succès:

$ 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
la source
A travaillé pour moi, Sierra 10.12.6
Ivan Danci
5

Veuillez suivre ci-dessous et changer une partie en fonction de vos besoins.

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
la source
4

Installez imagemagick version 6 car la version 7 n'est pas compatible:

$ brew install imagemagick@6

Ne devrait pas lier - force l'ancienne version car cela changera les binaires dans votre chemin et le bonbrew doctor se plaindra.

Référencez les en-têtes et les bibliothèques de la version 6 qui ont été installés lors de la construction de l'extension native du gem:

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

Remarque: a fonctionné pour moi sans indiquer le dossier lib et include car pkgconfig en est responsable.

Remarque: 6.9.10-14 est la dernière version d'imagemagick @ 6, mais n'hésitez pas à la changer si vous devez utiliser une autre version

wlads
la source
3

à la version 7.0.7-1, vous pouvez créer un lien symbolique, mais la compilation échouera plus tard.

cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagicCore/ magick
territorial
la source
La modification en attente est la mienne, mais pour une raison quelconque, je me suis déconnecté et c'est maintenant "par un utilisateur anonyme".
Nakilon il y a
3

Voici comment j'ai résolu (après de nombreux essais et échecs) sur macOS High Sierra 10.13.3 avec Homebrew:

  1. il semble que RMagick 2.16.0 n'est pas compatible avec la dernière version d'ImageMagick (Version 7): http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. J'ai désinstallé imagemagick: brew uninstall imagemagick
  3. Ensuite, j'ai installé Imagemagick avec cette formule: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

Si vous avez déjà installé une ancienne version d'Imagemagick, cela devrait fonctionner: https://stackoverflow.com/a/41674363

iGian
la source
2

Il n'est pas nécessaire de lier ou de dissocier quoi que ce soit, suivre les instructions du script d'installation de brew aide:

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
la source
1

Vous avez la même erreur pour la construction d'image alpine 3.9. Il est livré avec ImageMagick 7.0.8.38-r0

Pour résoudre ce problème, vous utilisez soit Alpine 3.5 avec ImageMagick 6.9.6.8-r1 :

FROM alpine:3.5

Ou installez ImageMagick 6.9.6.8-r1 avec le référentiel de packages pour 3.5:

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

Il existe un problème ouvert dans le référentiel rmagick concernant les versions ayant échoué pour ImageMagick 7.0.x. alors j'espère qu'il sera bientôt corrigé.

Martin Zinovsky
la source
0

Quelque chose n'allait pas du tout sur mon système, à tel point qu'il était complètement f * d, mais j'ai finalement pu réinstaller RMagick pour Ruby 1.8.7 après avoir installé

L'installation d'une nouvelle version de Ruby avec RVM a rvm install 1.8.7également installé un nouveau compilateur GCC: il a supprimé une ancienne version 4.6 de GCC et installé la version 4.9 de GCC. Apparemment, GCC n'a pas pu trouver les bons en-têtes malgré pkg-config.

0x4a6f4672
la source
0

J'explique en détail le processus d'installation dans ImageMagick installer dans centos .

de toute façon ...
après l'installation Installez la bibliothèque PHP Imagick & ImageMagick-devel & ImageMagick comme ci-dessous:

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

aller dans / usr / include

cd /usr/include

Important: copiez le dossier ImageMagick de "/ usr / include" vers "/ usr / local / include" pour ImageMagick trouver "MagickWand.h"

J'ai testé ce changement sur imagick-3.4.3 (ImageMagick-7) et centos 6.5 et php56 et fonctionne parfaitement ...

Si vous avez déjà installé "ImageMagick" plusieurs fois, supprimez-les d'abord tous et trouvez les dossiers "ImageMagick" et "imagick", nettoyez-les tous et poursuivez le processus d'installation avec ce changement.

Utilisez la commande suivante pour rechercher un fichier ou un dossier:

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

et continuez votre installation
avant les lignes ci-dessous n'oubliez pas: allez dans "php.ini" trouvez "disable_functions" et nettoyez "proc_open, popen, proc_close" parce que faire imagick a besoin de ces fonctions, après l'installation complète vous pouvez ajouter ces fonctions à votre " disable_functions "sur le fichier" php.ini ".

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

Bonne chance...

Ferhad Konar
la source
0

Pour la version Ubuntu> 12 et n'utilisant pas homebrew,

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

Si vous obtenez des fichiers '7z' au lieu de fichiers 'tar.gz' dans le lien wget, alors

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

Ensuite, vous pouvez reprendre votre bundler pour RMagick.

réponses
la source
-1

Tout d'abord, vous n'avez pas besoin de désinstaller imagemagick si un 6.x est installé, comme illustré ci-dessous. Vous pouvez voir que le "principal" actuel est 7.0.7-8mais 6.9.1-10est toujours 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

Si vous ne disposez pas d'une ancienne version 6.x, alors installer ImageMagick @ 6.

Deuxièmement, ne forcez pas le lien imagemagick, surtout pas 6. EDIT: Voir ¹
Vous devez définir PKG_CONFIG_PATH en plus des indicateurs --with-opt- *.

Cela fonctionne pour moi sur High Sierra avec la configuration de brassage susmentionnée sur 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/

Construire des documents ri échoue, mais ceux-ci sont sans conséquence.

¹: La construction fonctionne, le chemin dylib que RMagick recherche est erroné. Problème n ° 278 soulevé pour clarifier si cela peut être corrigé. Sinon, une liaison symbolique manuelle de libMagickWand, etc. est nécessaire. Peut-être encore plus sûr de lier manuellement les bibliothèques spécifiques que brew link --forcesi.

mmlac
la source