Установка RMagick: не удается найти MagickWand.h

164

Обновление RMagick и Imagemagick является болезненным опытом. Я обновил версию Imagemagick на моем Mac (MacOS El Capitan Version 10.11.5) с помощью homebrew для одного проекта в Ruby 2.3 до6.9.5-9

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

Теперь более старый проект в Ruby 1.8.7 отказывается работать с сообщением об ошибке «эта установка RMagick была настроена с ImageMagick 6.8.9, но ImageMagick 6.9.5-9 используется». Таким образом я удалил "rmagick", но его нельзя установить снова

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

И если он не может быть установлен, все приложение не может быть запущено. Я попробовал все ответы отсюда , и ни один из них не работает на MacOS :-( Я переустановил imagemagick и pkg-config с homebrew, и безуспешно пробовал разные версии RMagick. 2.16.0 является последней версией RMagick в настоящее время.

MagicWand, похоже, используется в версии ImageMagick> 6.9, и его можно найти на компьютере:

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

Это не работает, даже если я укажу эти пути во время установки gem (та же ошибка, что и выше) :-(

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

ОБНОВИТЬ:

Ошибка возникает только для Ruby 1.8.7, есть возможность установить RMagick для Ruby 2.0 и Ruby 2.3. Ruby 1.8.7 и ImageMagick 6.9.5 не совместимы.

  • Рубин 1,8,7 х
  • Ruby 2.0.0 ✓
  • Ruby 2.3.1 ✓
0x4a6f4672
источник
Что это, игра про Гарри Поттера?
Ограниченное искупление
1
@LimitedAtonement, видимо, да :-)
0x4a6f4672

Ответы:

461

Чтобы решить эту проблему в Mac OSX Sierra, High Sierra, El Capitan, Mojave и Catalina , вы можете сделать следующее:

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

imagemagick@6есть keg-only, так что вам нужно будет принудительно связать.

К.М. Ракибул Ислам
источник
7
Пришлось отсоединять вручную brew unlink imagemagickперед ссылкой - но это сработало. Большое спасибо.
Харис Краина
2
Вот это да. Супер отстой, что у меня не может быть последней версии ImageMagick, но это работает. Спасибо!
Фоменция
1
Отлично работает с Ubuntu Ubuntu 16.04.3 LTS
violentr
Не помогло Еще Wandошибка на macOS.
Накилон
55

У меня была такая же проблема с ImageMagick 7.0.4-4 . Правильное исправление заключается в установке imagemagick@6. Мне показался https://github.com/Homebrew/homebrew-core/pull/8756 полезным, если вы случайно удалили imagemagick@6или вообще не установили его.

Рэймонд Кокс
источник
ВОТ ЭТО ДА! Большое спасибо за эту ссылку. Я потратил почти половину своего рабочего дня, пытаясь это исправить.
kalehv
14
Обратите внимание, что imagemagick @ 6 предназначен только для бочонков, поэтому вам нужно принудительно связать. brew install imagemagick@6 && brew link imagemagick@6 --forceрешил это для меня
Даррен Ченг
1
Круто, ура! Это сработало для меня:brew install --force imagemagick@6 && brew link imagemagick@6 --force
Белла
1
Да, установка предыдущей версии (6x) определенно исправит это. Проблема в том, что структура папок файлов imagemagick изменилась в версии 7x. И при установке драгоценного камня он предполагает структуру папок, которая есть у 6x
Prakash Raman
Откат к imagemagick @ 6, к сожалению, не работает для меня. Даже после переустановки и повторного связывания я все еще получаю это сообщение при попытке установить 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
источник
1
-1 потому что вы заставляете ссылку без причины и никому не говорите, почему это плохая идея для начала. Смотрите мой ответ, чтобы сделать это "правильно" в смысле Homebrew, а не MacPorts.
mmlac
21

Прежде всего, отмените связь с установленным вами imagemagick, который не был правильно установлен в последней версии Mac High Sierra, используя.

brew unlink imagemagick

затем установите последнюю версию imagemagic6, используя команду ниже

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

Затем установите gem rmagick используя команду ниже

gem install rmagick 

Это будет работать отлично.

Али Хасан Мирза
источник
16

да, это решает мою проблему:

MacOS X Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
BMA88
источник
14

Многие вещи изменились в ImageMagick 7, например, по этому пути: include/.../wand и wand/MagickWand.hв настоящее время встроены в драгоценный камень rmagic. В моем случае было невозможно обновить драгоценный камень, так как проект довольно старый. В итоге я установил старую версию ImageMagic.

Вы можете установить последнюю версию с 6.xx:

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

Вы также можете прикрепить его для последующего использования: brew pin imagemagick

Питер Тот - Тома
источник
1
Работал для меня: Mac OS 10.12.X. Сначала я установил ImageMagick 7, и у меня возникли проблемы с установкой ram gem rmagick.
Симон Франзен
11

Что-то изменилось с ImageMagick 7.0.4-4 для меня. wand/MagickWand.hне может быть найдено больше:

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

У меня все еще был ImageMagick 6.9.7-3 в моей системе, и я вернулся с

% 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

После этого я мог установить rmagickбез проблем:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Хольгер Фрохлофф
источник
Не могли бы вы найти какие-либо решения? У меня такие же проблемы с тобой.
Кемаль Аккоюн
как я сказал. переключение обратно на imagemagick 6.9 исправляет это для меня.
Хольгер Фролов
1
Спасибо, я понял это и починил, согласно твоему предложению. Но что я пытался спросить, решили ли вы это с помощью последней версии ImageMagick? Затем я обнаружил связанную проблему github.com/rmagick/rmagick/issues/256, в которой также предлагалось понизить версию ImageMagick, как и вы. Так что спасибо еще раз.
Кемаль Аккоюн
Добро пожаловать. Я еще не решил проблему с помощью версии 7.x. Я думаю, что исправление будет довольно скоро. Посмотрим. :)
Хольгер Фролов
6

RMagick зависит от устаревшей версии imagemagick версии 6. (см. Ниже). Homebrew предлагает этот пакет только для бочонков, который вы можете установить вместе с:

brew install imagemagick@6

Вывод сборки будет содержать раздел Caveats (также доступен из, brew info imagemagick@6если вы очистили вывод):

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

Вместо того , чтобы сила связей, которая имеет потенциал , чтобы вызвать проблемы с другим программным обеспечением , что делает поддержку новых версий ImageMagick, вы можете использовать предложенный exports , чтобы сделать драгоценный камень RMagick забрать старую версию , пока он строит:

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. Помогите внести свой вклад в обновление, если вы знаете Ruby и 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
Юрий Лебедев
источник
спасибо за советы и предложения, к сожалению это не помогло :-(
0x4a6f4672
1
Этот ответ был единственным, который упомянул, pkg-configи это сработало.
Джейсон Ким
pkg-config - ключ к успеху. Огромное спасибо.
Майкл Иоганн
5

У меня пока нет репутации оставлять этот комментарий как улучшение другого ответа, но ответ @ Evgeniy28 сработал для меня на Sierra только после установки pkg-config, которая не устанавливается по умолчанию на новой машине Sierra.

Так:

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

Успех:

$ 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
Эндрю Браун
источник
Работал на меня, Сьерра 10.12.6
Иван Данчи
5

Пожалуйста, следуйте ниже и измените часть в соответствии с вашими потребностями.

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

Установите imagemagick версии 6, потому что версия 7 не совместима:

$ brew install imagemagick@6

Не следует ссылаться на --force старой версии, потому что это изменит двоичные файлы на вашем пути, и добро brew doctorпожалуется.

Ссылка на заголовки и библиотеки из версии 6, которая была установлена ​​при сборке собственного расширения gem:

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

Примечание: работал для меня без указания папки lib и include, потому что за это отвечает pkgconfig.

Примечание: 6.9.10-14 является последней версией imagemagick @ 6, но вы можете сменить ее, если вам нужна другая версия

wlads
источник
3

в версии 7.0.7-1 вы можете создать символическую ссылку, но ее компиляция не удастся.

cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagicCore/ magick
территориальной
источник
Ожидающее редактирование мое, но по какой-то причине меня вышли из системы, и теперь оно «от анонимного пользователя».
Накилон
3

Вот как я решил (после многих попыток и неудачи) на MacOS High Sierra 10.13.3 с Homebrew:

  1. Похоже, что RMagick 2.16.0 несовместим с новейшей версией ImageMagick (версия 7): http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. Я удалил imagemagick: brew uninstall imagemagick
  3. Затем я установил Imagemagick с этой формулой: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

Если вы уже установили старую версию Imagemagick, это должно работать: https://stackoverflow.com/a/41674363

iGian
источник
2

Нет необходимости связывать или отсоединять что-либо, следуя инструкциям скрипта brew install:

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
источник
1

Получена та же ошибка для сборки альпийских 3.9 изображений. Поставляется с ImageMagick 7.0.8.38-r0

Чтобы исправить это, вы либо используете Alpine 3.5 с ImageMagick 6.9.6.8-r1 :

FROM alpine:3.5

Или установите ImageMagick 6.9.6.8-r1 с репозиторием пакетов для 3.5:

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

В репозитории rmagick существует открытая проблема, касающаяся неудачных сборок для ImageMagick 7.0.x. так что, надеюсь, это будет исправлено в ближайшее время.

Мартин Зиновский
источник
0

Что-то в моей системе было что-то не так, настолько сильно, что все было исправлено, но я наконец смог установить RMagick для Ruby 1.8.7 снова после установки

При установке новой версии Ruby с RVM rvm install 1.8.7также был установлен новый компилятор GCC: он удалил старую версию GCC 4.6 и установил версию 4.9 GCC. Очевидно, что GCC не удалось найти правильные заголовки, несмотря на pkg-config.

0x4a6f4672
источник
0

Я полностью объясняю процесс установки в ImageMagick установки в Centos .

в любом случае ...
после установки Установите PHP-библиотеку Imagick & ImageMagick-devel & ImageMagick, как показано ниже:

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

перейдите в / usr / include

cd /usr/include

Важно: скопируйте папку ImageMagick из «/ usr / include» в «/ usr / local / include», чтобы ImageMagick нашел «MagickWand.h»

Я протестировал это изменение на imagick-3.4.3 (ImageMagick-7) и centos 6.5 и php56 и работает отлично ...

Если вы уже установили «ImageMagick» несколько раз, сначала удалите все из них и найдите папки «ImageMagick» и «imagick», очистите их все и продолжите процесс установки с этим изменением.

Используйте следующую команду, чтобы найти файл или папку:

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

и продолжайте установку
до того, как появятся следующие строки: не забудьте: перейдите в «php.ini», найдите «disable_functions» и очистите «proc_open, popen, proc_close», потому что make imagick нужны эти функции, после полной установки вы можете добавить эти функции в свой » disable_functions "в файле" php.ini ".

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

Удачи...

Ферхад Конар
источник
0

Для версии Ubuntu> 12 и без использования homebrew,

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

Если вы получаете файлы '7z' вместо файлов 'tar.gz' в ссылке 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

После этого вы можете возобновить работу своего упаковщика для RMagick.

remonses
источник
-1

Во-первых, вам не нужно удалять imagemagick, если на нем установлен 6.x, как показано ниже. Вы можете видеть текущий «главный», 7.0.7-8но 6.9.1-10все еще там.

$ 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

Если у вас нет старой версии 6.x, то установить ImageMagick @ 6.

Во-вторых, не заставляйте ссылку на изображение , особенно не 6. РЕДАКТИРОВАТЬ: см. ¹
Вам необходимо установить PKG_CONFIG_PATH в дополнение к флагам --with-opt- *.

Это работает для меня на High Sierra с вышеупомянутой настройкой brew на 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/

Построить ri docs не удается, но это несущественно.

Building: Строительные работы, путь к dylib, который ищет RMagick, неверен. Поднятая проблема № 278, чтобы уточнить, можно ли это исправить. В противном случае необходима ручная символическая ссылка на libMagickWand и т. Д. Может быть, безопаснее вручную связать определенные библиотеки, чем brew link --forceхотя бы.

mmlac
источник