RMagick-Installation: MagickWand.h kann nicht gefunden werden

164

Das Aktualisieren von RMagick und Imagemagick ist eine schmerzhafte Erfahrung. Ich habe die Imagemagick-Version auf meinem Mac (MacOS El Capitan Version 10.11.5) mit Homebrew für ein Projekt in Ruby 2.3 auf aktualisiert6.9.5-9

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

Jetzt weigert sich ein älteres Projekt in Ruby 1.8.7, mit der Fehlermeldung "Diese Installation von RMagick wurde mit ImageMagick 6.8.9 konfiguriert, aber ImageMagick 6.9.5-9 wird verwendet" zu arbeiten. Daher habe ich "rmagick" deinstalliert, aber es kann nicht erneut installiert werden

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

Und wenn es nicht installiert werden kann, kann nicht die gesamte Anwendung gestartet werden. Ich habe alle Antworten von hier aus ausprobiert , und keine davon funktioniert unter MacOS :-( Ich habe imagemagick und pkg-config mit Homebrew neu installiert und verschiedene Versionen von RMagick ohne Erfolg ausprobiert. 2.16.0 ist derzeit die neueste Version von RMagick .

MagicWand scheint in ImageMagick Version> 6.9 verwendet zu werden und befindet sich auf dem Computer:

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

Es funktioniert nicht, auch wenn ich diese Pfade während der Gem-Installation spezifiziere (gleicher Fehler wie oben) :-(

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

AKTUALISIEREN:

Der Fehler tritt nur für Ruby 1.8.7 auf. Es ist möglich, RMagick für Ruby 2.0 und Ruby 2.3 zu installieren. Ruby 1.8.7 und ImageMagick 6.9.5 scheinen nicht kompatibel zu sein.

  • Ruby 1.8.7 x
  • Ruby 2.0.0 ✓
  • Ruby 2.3.1 ✓
0x4a6f4672
quelle
Was ist das, ein Harry-Potter-Spiel?
Eingeschränktes Sühnopfer

Antworten:

460

Um das Problem in Mac OSX Sierra, High Sierra, El Capitan, Mojave und Catalina zu lösen , haben Sie folgende Möglichkeiten:

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

imagemagick@6ist keg-only, so müssen Sie die Verknüpfung erzwingen.

KM Rakibul Islam
quelle
7
Musste brew unlink imagemagickvor dem Link manuell die Verknüpfung aufheben - aber es hat funktioniert. Vielen Dank.
Haris Krajina
2
Beeindruckend. Super scheiße, dass ich nicht die neueste Version von ImageMagick haben kann, aber das funktioniert. Vielen Dank!
Fomentia
1
Funktioniert perfekt mit Ubuntu Ubuntu 16.04.3 LTS
Violentr
55

Ich hatte das gleiche Problem mit ImageMagick 7.0.4-4 . Die richtige Lösung ist die Installation imagemagick@6. Ich fand https://github.com/Homebrew/homebrew-core/pull/8756 nützlich, wenn Sie Ihre versehentlich gelöscht haben imagemagick@6oder sie überhaupt nicht installiert hatten.

Raymond Cox
quelle
BEEINDRUCKEND! Vielen Dank für diesen Link. Ich habe fast die Hälfte meines Arbeitstages damit verbracht, dies zu beheben.
Kalehv
14
Beachten Sie, dass imagemagick @ 6 nur im Fass ist, sodass Sie die Verknüpfung erzwingen müssen. brew install imagemagick@6 && brew link imagemagick@6 --forcelöste es für mich
Darren Cheng
1
Super, Prost! Das hat bei mir funktioniert:brew install --force imagemagick@6 && brew link imagemagick@6 --force
Bella
1
Ja, die Installation der vorherigen Version (6x) würde das Problem definitiv beheben. Das Problem ist, dass sich die Ordnerstruktur der imagemagick-Dateien in der 7x-Version geändert hat. Und während der Installation des Edelsteins wird die Ordnerstruktur von 6x angenommen
Prakash Raman
Das Zurücksetzen auf imagemagick @ 6 funktioniert bei mir leider nicht. Selbst nach der Neuinstallation und erneuten Verknüpfung wird beim Versuch, rmagick zu installieren, immer noch folgende Meldung angezeigt: 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
quelle
1
-1, weil Sie die Verknüpfung ohne Grund erzwingen oder niemandem sagen, warum dies zunächst eine schlechte Idee ist. Siehe meine Antwort dafür, dass ich es "richtig" im Sinne von Homebrew und nicht von MacPorts mache.
mmlac
21

Entfernen Sie zunächst die Verknüpfung Ihres installierten Imagemagicks, der in der neuesten Mac High Sierra nicht ordnungsgemäß installiert wurde.

brew unlink imagemagick

Installieren Sie dann das neueste imagemagic6 mit dem folgenden Befehl

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

Installieren Sie dann gem rmagick mit dem folgenden Befehl

gem install rmagick 

Es wird einwandfrei funktionieren.

Ali Hassan Mirza
quelle
16

yah dieser löst mein Problem:

MacOS X Sierra:

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

Viele Dinge haben sich in ImageMagick 7 wie folgt geändert : include/.../wand , undwand/MagickWand.h sind im Moment im rmagischen Juwel fest verdrahtet. In meinem Fall war es nicht möglich, das Juwel zu aktualisieren, da das Projekt ziemlich alt ist. Also habe ich eine ältere Version von ImageMagic installiert.

Sie können die neueste Version von 6.xx installieren:

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

Sie können es auch für eine spätere Verwendung anheften: brew pin imagemagick

Peter Toth - Toma
quelle
1
Arbeitete für mich: Mac OS 10.12.X. Ich habe zuerst ImageMagick 7 installiert und hatte Probleme mit der Installation des Rails Gem Rmagick.
Simon Franzen
11

Mit ImageMagick 7.0.4-4 hat sich für mich etwas geändert . wand/MagickWand.hkonnte nicht mehr gefunden werden:

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

Ich hatte immer noch ImageMagick 6.9.7-3 auf meinem System und wechselte zurück mit

% 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

Danach konnte ich rmagickohne Probleme installieren :

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Holger Frohloff
quelle
Könnten Sie irgendwelche Lösungen finden? Ich habe die gleichen Probleme mit Ihnen.
Kemal Akkoyun
wie ich sagte. Das Zurückschalten auf imagemagick 6.9 behebt das Problem für mich.
Holger Frohloff
1
Danke, ich habe das bekommen und es gemäß Ihrem Vorschlag behoben. Aber was wollte ich fragen, ob Sie es mit der neuesten ImageMagick-Version gelöst haben? Dann fand ich das verwandte Problem github.com/rmagick/rmagick/issues/256, das auch vorschlug, ImageMagick wie Sie herunterzustufen. Also nochmals vielen Dank.
Kemal Akkoyun
Du bist herzlich Willkommen. Ich habe das Problem mit Version 7.x noch nicht gelöst. Ich denke, es wird ziemlich bald eine Lösung geben. Wir werden sehen. :)
Holger Frohloff
6

RMagick hängt von einer veralteten Version von imagemagick, Version 6, ab. (Siehe unten) Homebrew bietet dies als reines Fasspaket an, mit dem Sie Folgendes installieren können:

brew install imagemagick@6

Die Build-Ausgabe enthält einen Abschnitt mit Einschränkungen (auch verfügbar, brew info imagemagick@6wenn Sie die Ausgabe gelöscht haben):

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

Anstatt das Verknüpfen zu erzwingen, was möglicherweise Probleme mit anderer Software verursacht, die neuere Versionen von imagemagick unterstützt, können Sie die vorgeschlagenen exports verwenden, damit das RMagick-Juwel die alte Version aufnimmt, während es erstellt wird:

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 Hilfe des Upgrade - Aufwand beitragen , wenn Sie Ruby und C kennen!
Phil Calvin
quelle
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
quelle
danke für die tipps und vorschläge, leider hat es nicht geholfen :-(
0x4a6f4672
1
Diese Antwort war die einzige, die erwähnt wurde, pkg-configund sie funktionierte.
Jason Kim
pkg-config ist der Schlüssel zum Erfolg. Ich danke dir sehr.
Michael Johann
5

Ich habe noch nicht den Ruf, dies als Kommentar zu hinterlassen, der eine andere Antwort verbessert, aber die Antwort von @ Evgeniy28 funktionierte für mich in Sierra erst, nachdem auch pkg-config installiert wurde, das standardmäßig nicht auf einem neuen Sierra-Computer installiert ist.

So:

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

Erfolg:

$ 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
quelle
Arbeitete für mich, Sierra 10.12.6
Ivan Danci
5

Bitte folgen Sie unten und ändern Sie einige Teile entsprechend Ihren Anforderungen.

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

Installieren Sie imagemagick Version 6, da Version 7 nicht kompatibel ist:

$ brew install imagemagick@6

Sollte nicht verlinken - erzwinge die ältere Version, da dies die Binärdateien in deinem Pfad ändert und die Guten brew doctorsich beschweren.

Verweisen Sie auf die Header und Bibliotheken aus Version 6, die beim Erstellen der nativen Erweiterung des Gems installiert wurden:

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

Hinweis: Hat für mich ohne Angabe der lib und des Include-Ordners funktioniert, da die pkgconfig dafür verantwortlich ist.

Hinweis: 6.9.10-14 ist die neueste Version von imagemagick @ 6, Sie können sie jedoch jederzeit ändern, wenn Sie eine andere Version verwenden müssen

wlads
quelle
3

So habe ich (nach vielen Versuchen und Misserfolgen ) unter macOS High Sierra 10.13.3 mit Homebrew gelöst:

  1. Es scheint, dass RMagick 2.16.0 nicht mit der neuesten Version von ImageMagick (Version 7) kompatibel ist: http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. Ich habe imagemagick deinstalliert: brew uninstall imagemagick
  3. Dann habe ich Imagemagick mit folgender Formel installiert: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

Wenn Sie bereits eine alte Version von Imagemagick installiert haben, sollte dies funktionieren: https://stackoverflow.com/a/41674363

iGian
quelle
2

In Version 7.0.7-1 können Sie einen symbolischen Link erstellen, dessen Kompilierung jedoch fehlschlägt.

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

Es ist nicht erforderlich, etwas zu verknüpfen oder die Verknüpfung aufzuheben. Befolgen Sie dazu die Anweisungen im Brew-Installationsskript:

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

Ich habe den gleichen Fehler beim Erstellen des Alpine 3.9-Images erhalten. Es kommt mit ImageMagick 7.0.8.38-r0

Um dies zu beheben, verwenden Sie entweder alpine 3.5 mit ImageMagick 6.9.6.8-r1 :

FROM alpine:3.5

Oder installieren Sie ImageMagick 6.9.6.8-r1 mit Paket-Repository für 3.5:

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

In rmagick repo gibt es ein offenes Problem bezüglich fehlgeschlagener Builds für ImageMagick 7.0.x. also hoffentlich wird es bald behoben.

Martin Zinovsky
quelle
0

Auf meinem System stimmte etwas nicht, so schlimm, dass es vollständig funktioniert hatte, aber ich konnte RMagick für Ruby 1.8.7 nach der Installation endlich wieder installieren

Bei der Installation einer neuen Ruby-Version mit RVM wurde rvm install 1.8.7auch ein neuer GCC-Compiler installiert: Eine ältere GCC-Version 4.6 wurde entfernt und die GCC-Version 4.9 installiert. Anscheinend konnte GCC trotz pkg-config nicht die richtigen Header finden.

0x4a6f4672
quelle
0

Ich erkläre den Installationsprozess in ImageMagick vollständig in Centos .

sowieso ...
nach der Installation Installieren Sie die PHP-Bibliothek von Imagick & ImageMagick-devel & ImageMagick wie folgt:

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

gehe zu / usr / include

cd /usr/include

Wichtig: Kopieren Sie den ImageMagick-Ordner von "/ usr / include" nach "/ usr / local / include", damit ImageMagick "MagickWand.h" findet.

Ich habe diese Änderung auf imagick-3.4.3 (ImageMagick-7) und centos 6.5 und php56 getestet und funktioniert perfekt ...

Wenn Sie "ImageMagick" bereits mehrmals installiert haben, entfernen Sie zuerst alle Ordner und suchen Sie die Ordner "ImageMagick" und "imagick". Bereinigen Sie alle Ordner und setzen Sie den Installationsvorgang mit dieser Änderung fort.

Verwenden Sie den folgenden Befehl, um eine Datei oder einen Ordner zu finden:

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

und setzen Sie Ihre Installation fort,
bevor die folgenden Zeilen nicht vergessen: Gehen Sie zu "php.ini", suchen Sie "disable_functions" und bereinigen Sie "proc_open, popen, proc_close", da imagick diese Funktionen benötigt. Nach Abschluss der Installation können Sie diese Funktionen zu Ihrer hinzufügen. " disable_functions "in der Datei" php.ini ".

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

Viel Glück...

Ferhad Konar
quelle
0

Für Ubuntu Version> 12 und ohne Homebrew,

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

Wenn Sie im wget-Link '7z'-Dateien anstelle von' tar.gz'-Dateien erhalten, dann

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

Dann können Sie Ihren Bundler für RMagick fortsetzen.

remonses
quelle
-1

Erstens müssen Sie imagemagick nicht deinstallieren, wenn 6.x installiert ist, wie unten gezeigt. Sie können sehen, dass das aktuelle "Haupt" 7.0.7-8aber 6.9.1-10immer noch da ist.

$ 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

Wenn Sie nicht eine alte Version 6.x haben, dann imagemagick @ 6 installieren.

Zweitens erzwingen Sie kein Link- Imagemagick, insbesondere nicht 6. BEARBEITEN: Siehe ¹
Sie müssen PKG_CONFIG_PATH zusätzlich zu den Flags --with-opt- * setzen.

Dies funktioniert für mich in High Sierra mit dem oben genannten Brau-Setup auf 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/

Das Erstellen von RI-Dokumenten schlägt fehl, diese sind jedoch nicht relevant.

¹: Bauarbeiten, der von RMagick gesuchte Dylib-Pfad ist jedoch falsch. Problem Nr. 278 wurde ausgelöst , um zu klären, ob dies behoben werden kann. Andernfalls ist eine manuelle Verknüpfung von libMagickWand usw. erforderlich. Es könnte immer noch sicherer sein, die spezifischen Bibliotheken manuell zu verknüpfen, als dies der Fall brew link --forcewäre.

mmlac
quelle