Instalacja RMagick: nie można znaleźć MagickWand.h

164

Aktualizacja RMagick i Imagemagick to bolesne doświadczenie. Zaktualizowałem wersję Imagemagick na moim Macu (MacOS El Capitan wersja 10.11.5) z homebrew dla jednego projektu w Ruby 2.3 do6.9.5-9

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

Teraz starszy projekt w Ruby 1.8.7 odmawia pracy z komunikatem o błędzie „ta instalacja RMagick została skonfigurowana z ImageMagick 6.8.9, ale ImageMagick 6.9.5-9 jest używany”. W ten sposób odinstalowałem "rmagick", ale nie można go zainstalować ponownie

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

A jeśli nie można go zainstalować, cała aplikacja nie może zostać uruchomiona. Wypróbowałem wszystkie odpowiedzi tutaj i żadna z nich nie działa na MacOS :-( Ponownie zainstalowałem imagemagick i pkg-config z homebrew i wypróbowałem różne wersje RMagicka bez powodzenia. 2.16.0 jest obecnie najnowszą wersją RMagicka .

Wydaje się, że MagicWand jest używany w ImageMagick w wersji> 6.9 i można go znaleźć na komputerze:

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

To nie działa, nawet jeśli podam te ścieżki podczas instalacji gem (ten sam błąd co powyżej) :-(

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

AKTUALIZACJA:

Błąd występuje tylko w przypadku Ruby 1.8.7, można zainstalować RMagick dla Ruby 2.0 i Ruby 2.3. Wydaje się, że Ruby 1.8.7 i ImageMagick 6.9.5 nie są kompatybilne.

  • Ruby 1,8,7 x
  • Ruby 2.0.0 ✓
  • Ruby 2.3.1 ✓
0x4a6f4672
źródło
Co to jest, gra o Harrym Potterze?
Limited Atonement

Odpowiedzi:

460

Aby rozwiązać problem w systemie Mac OSX Sierra, High Sierra, El Capitan, Mojave i Catalina , możesz wykonać następujące czynności:

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

imagemagick@6jest keg-only, więc musisz wymusić tworzenie linków.

KM Rakibul Islam
źródło
7
Musiałem odłączyć ręcznie brew unlink imagemagickprzed połączeniem - ale zadziałało. Wielkie dzięki.
Haris Krajina,
2
Łał. Super jest do bani, że nie mogę mieć najnowszej wersji ImageMagick, ale to działa. Dzięki!
Fomentia,
1
Doskonale współpracuje z Ubuntu Ubuntu 16.04.3 LTS
violentr
55

Miałem ten sam problem z ImageMagick 7.0.4-4 . Właściwa poprawka to instalacja imagemagick@6. Uważam, że https://github.com/Homebrew/homebrew-core/pull/8756 jest przydatny, jeśli przypadkowo usunąłeś swój imagemagick@6lub nigdy nie miałeś go zainstalowanego w pierwszej kolejności.

Raymond Cox
źródło
ŁAŁ! Bardzo dziękuję za ten link. Zmarnowałem prawie połowę mojego dnia pracy, próbując to naprawić.
kalehv
14
Zauważ, że imagemagick @ 6 jest tylko beczką, więc musisz wymusić połączenie. brew install imagemagick@6 && brew link imagemagick@6 --forcerozwiązał to dla mnie
Darren Cheng
1
Świetnie, na zdrowie! To zadziałało dla mnie:brew install --force imagemagick@6 && brew link imagemagick@6 --force
Bella
1
Tak, zainstalowanie poprzedniej wersji (6x) na pewno by to naprawiło. Problem polega na tym, że struktura folderów plików imagemagick zmieniła się w wersji 7x. A podczas instalacji klejnotu zakłada się strukturę folderów, którą ma 6x
Prakash Raman
Powrót do imagemagick @ 6 niestety nie działa. Nawet po ponownym zainstalowaniu i ponownym podłączeniu nadal otrzymuję ten komunikat podczas próby zainstalowania 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
źródło
1
-1, ponieważ wymuszasz link bez powodu ani nie mówisz nikomu, dlaczego jest to zły pomysł. Zobacz moją odpowiedź dotyczącą robienia tego „poprawnie” w sensie Homebrew, a nie MacPorts.
mmlac
21

Przede wszystkim odłącz zainstalowany plik imagemagick, który nie został poprawnie zainstalowany w najnowszej wersji systemu Mac High Sierra, używając.

brew unlink imagemagick

następnie zainstaluj najnowszy imagemagic6 za pomocą poniższego polecenia

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

Następnie zainstaluj gem rmagick za pomocą poniższego polecenia

gem install rmagick 

Będzie działać idealnie.

Ali Hassan Mirza
źródło
16

tak, ten rozwiązuje mój problem:

MacOS X Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
BMA88
źródło
14

Wiele rzeczy zmieniło się w ImageMagick 7, takich jak ta ścieżka: include/.../wand i wand/MagickWand.hjest w tej chwili wbudowana w rmagic gem. W moim przypadku nie można było zaktualizować perełki, ponieważ projekt jest dość stary. W końcu zainstalowałem starszą wersję ImageMagic.

Możesz zainstalować najnowszą wersję od 6.xx:

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

Możesz również przypiąć go do późniejszego wykorzystania: brew pin imagemagick

Peter Toth - Toma
źródło
1
Pracował dla mnie: Mac OS 10.12.X. Najpierw zainstalowałem ImageMagick 7 i miałem problemy z zainstalowaniem rmagick rails gem.
Simon Franzen
11

Coś się zmieniło w ImageMagick 7.0.4-4 dla mnie. wand/MagickWand.hnie można już znaleźć:

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

Nadal miałem ImageMagick 6.9.7-3 w swoim systemie i zmieniłem go z powrotem z

% 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

Później mogłem rmagickbez problemu zainstalować :

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Holger Frohloff
źródło
Czy możesz znaleźć jakieś rozwiązania? Mam z tobą te same problemy.
Kemal Akkoyun
Tak jak powiedziałem. powrót do imagemagick 6.9 rozwiązuje to za mnie.
Holger Frohloff
1
Dzięki, mam to i naprawiłem zgodnie z twoją sugestią. Ale o co chciałem zapytać, czy rozwiązałeś to przy użyciu najnowszej wersji ImageMagick? Następnie znalazłem powiązany problem github.com/rmagick/rmagick/issues/256, który również sugeruje obniżenie wersji ImageMagick, tak jak to zrobiłeś. Więc jeszcze raz dziękuję.
Kemal Akkoyun
Serdecznie zapraszamy. Nie rozwiązałem jeszcze problemu używając wersji 7.x. Myślę, że wkrótce nastąpi poprawka. Zobaczymy. :)
Holger Frohloff
6

RMagick zależy od przestarzałej wersji imagemagick, wersja 6. (patrz poniżej) Homebrew oferuje to jako pakiet tylko do beczek, który możesz zainstalować za pomocą:

brew install imagemagick@6

Wynik kompilacji będzie zawierał sekcję Ostrzeżenia (również dostępną brew info imagemagick@6po wyczyszczeniu danych wyjściowych):

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

Zamiast siła sieciowania, który ma potencjał, powodują problemy z innym oprogramowaniem, które ma obsługiwać nowsze wersje ImageMagick, można użyć sugerowane exports, aby gem RMagick odebrać starą wersję natomiast buduje:

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. Idź i pomóż w aktualizacji, jeśli znasz Rubiego i C!
Phil Calvin
źródło
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
źródło
dzięki za wskazówki i sugestie niestety nie pomogło :-(
0x4a6f4672
1
Ta odpowiedź była jedyną wymienioną pkg-configi zadziałała.
Jason Kim
pkg-config jest kluczem do sukcesu. Dziękuję bardzo.
Michael Johann
5

Nie mam jeszcze reputacji, aby zostawić to jako komentarz poprawiający inną odpowiedź, ale odpowiedź @ Evgeniy28 zadziałała dla mnie na Sierra tylko po zainstalowaniu pkg-config, który nie jest instalowany domyślnie na świeżej maszynie Sierra.

Więc:

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

Sukces:

$ 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
źródło
Pracował dla mnie Sierra 10.12.6
Ivan Danci
5

Postępuj zgodnie z poniższymi instrukcjami i zmień część w zależności od potrzeb.

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
źródło
4

Zainstaluj wersję imagemagick 6, ponieważ wersja 7 nie jest kompatybilna:

$ brew install imagemagick@6

Nie powinno się łączyć - wymuś starszą wersję, ponieważ zmieni to binaria na twojej ścieżce, a dobro brew doctorbędzie narzekać.

Odwołaj się do nagłówków i bibliotek z wersji 6, która została zainstalowana podczas budowania natywnego rozszerzenia gem:

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

Uwaga: Pracowałem dla mnie bez wskazania folderu lib i include, ponieważ jest za to odpowiedzialny pkgconfig.

Uwaga: 6.9.10-14 to najnowsza wersja imagemagick @ 6, ale możesz ją zmienić, jeśli chcesz użyć innej wersji

wlads
źródło
3

Oto, jak rozwiązałem (po wielu próbach i niepowodzeniach) na macOS High Sierra 10.13.3 z Homebrew:

  1. wygląda na to, że RMagick 2.16.0 nie jest kompatybilny z najnowszą wersją ImageMagick (wersja 7): http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. Odinstalowałem imagemagick: brew uninstall imagemagick
  3. Następnie zainstalowałem Imagemagick z tą formułą: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

Jeśli masz już zainstalowaną starą wersję Imagemagick, powinno to działać: https://stackoverflow.com/a/41674363

iGian
źródło
2

w wersji 7.0.7-1 można utworzyć dowiązanie symboliczne, ale kompilacja zakończy się niepowodzeniem w drugim przypadku.

cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagicCore/ magick
terytorialny
źródło
2

Nie ma potrzeby, aby niczego łączyć ani odłączać, postępuj zgodnie z instrukcjami ze skryptu instalacji brew:

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
źródło
1

Ten sam błąd dotyczy kompilacji obrazu Alpine 3.9. Pochodzi z ImageMagick 7.0.8.38-r0

Aby naprawić, albo używasz alpine 3.5 z ImageMagick 6.9.6.8-r1 :

FROM alpine:3.5

Lub zainstaluj ImageMagick 6.9.6.8-r1 z repozytorium pakietów dla 3.5:

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

W repozytorium rmagick jest otwarty problem dotyczący nieudanych kompilacji programu ImageMagick 7.0.x. więc miejmy nadzieję, że wkrótce zostanie to naprawione.

Martin Zinovsky
źródło
0

Coś było bardzo nie tak w moim systemie, tak bardzo, że całkowicie się popsuło, ale w końcu mogłem ponownie zainstalować RMagick for Ruby 1.8.7 po zainstalowaniu

Instalacja nowej wersji Ruby z RVM rvm install 1.8.7zainstalowała również nowy kompilator GCC: usunęła starszą wersję GCC 4.6 i zainstalowała GCC w wersji 4.9. Najwyraźniej GCC nie był w stanie znaleźć właściwych nagłówków pomimo pkg-config.

0x4a6f4672
źródło
0

W pełni wyjaśniam proces instalacji w ImageMagick install w centos .

tak czy owak ...
po instalacji Zainstaluj Imagick & ImageMagick-devel & ImageMagick bibliotekę PHP jak poniżej:

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

przejdź do / usr / include

cd /usr/include

Ważne: skopiuj folder ImageMagick z „/ usr / include” do „/ usr / local / include” dla ImageMagick znajdź „MagickWand.h”

Przetestowałem tę zmianę na imagick-3.4.3 (ImageMagick-7) i centos 6.5 i php56 i działa idealnie ...

Jeśli zainstalowałeś już program „ImageMagick” kilka razy, najpierw usuń je wszystkie i znajdź foldery „ImageMagick” i „imagick”, wyczyść je wszystkie i kontynuuj proces instalacji z tą zmianą.

Użyj następującego polecenia, aby znaleźć plik lub folder:

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

i kontynuuj instalację
przed poniższymi liniami nie zapomnij: idź do "php.ini" znajdź "disable_functions" i wyczyść "proc_open, popen, proc_close" ponieważ spraw, aby imagick potrzebował tych funkcji, po zakończeniu instalacji możesz dodać te funkcje do swojego " disable_functions "w pliku" php.ini ".

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

Powodzenia...

Ferhad Konar
źródło
0

Dla wersji Ubuntu> 12 i nie używającej homebrew,

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

Jeśli w łączu wget otrzymujesz pliki „7z” zamiast plików „tar.gz”, to

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

Następnie możesz wznowić swój pakiet dla RMagick.

remonses
źródło
-1

Po pierwsze, nie musisz odinstalowywać programu imagemagick, jeśli ma zainstalowaną wersję 6.x, jak pokazano poniżej. Możesz zobaczyć aktualny „główny”, 7.0.7-8ale 6.9.1-10nadal tam jest.

$ 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

Jeśli nie masz starej wersji 6.x, następnie zainstalować ImageMagick @ 6.

Po drugie, nie wymuszaj link imagemagick, szczególnie nie 6. EDYCJA: Zobacz ¹
Oprócz flag --with-opt- * musisz ustawić PKG_CONFIG_PATH.

To działa dla mnie na High Sierra z wyżej wymienioną konfiguracją parzenia na 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/

Tworzenie dokumentów ri kończy się niepowodzeniem, ale to nie ma znaczenia.

¹: Prace budowlane, ścieżka dylib, której szuka RMagick, jest jednak zła. Podniesiono numer 278, aby wyjaśnić, czy można to naprawić. W przeciwnym razie konieczne jest ręczne połączenie symboliczne libMagickWand itp. Wciąż bezpieczniejsze może być ręczne połączenie określonych bibliotek niż brew link --forcechociaż.

mmlac
źródło