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 ✓


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.


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.


Ł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

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.


16

tak, ten rozwiązuje mój problem:

MacOS X Sierra:

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

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


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

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!

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

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

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'

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


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


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

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

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.


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.


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


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.