Установка RMagick: не удается найти MagickWand.h
Обновление 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
UPDATE:
Ошибка только для Ruby 1.8.7, возможно установить RMagick для Ruby 2.0 и Ruby 2.3. Ruby 1.8.7 и ImageMagick 6.9.5 не кажутся совместимыми.
- Ruby 1.8.7 x
- Ruby 2.0.0 ✓
- Ruby 2.3.1 ✓
Ответы
Ответ 1
Что-то в моей системе было очень плохо, так что это было совсем не так, но я наконец смог установить RMagick для Ruby 1.8.7 после установки
Установка новой версии Ruby с RVM rvm install 1.8.7
также установила новый компилятор GCC: он удалил более старую версию GCC 4.6 и установил GCC версии 4.9. Очевидно, GCC не смог найти правильные заголовки, несмотря на pkg-config.
Ответ 2
Чтобы решить эту проблему в Mac OSX Sierra, High Sierra, El Capitan и Mojave, вы можете сделать следующее:
brew unlink imagemagick
brew install [email protected] && brew link [email protected] --force
[email protected]
предназначен keg-only
, поэтому вам нужно принудительно установить связь.
Ответ 3
У меня была такая же проблема с ImageMagick 7.0.4-4. Правильное исправление заключается в установке [email protected]
. Я нашел https://github.com/Homebrew/homebrew-core/pull/8756 полезным, если вы случайно удалили свой [email protected]
или никогда не устанавливали его в первую очередь.
Ответ 4
macOs Sierra:
brew uninstall imagemagick
brew install [email protected]
brew link [email protected] --force
Ответ 5
Прежде всего отмените установленный образ imagemagick, который не был правильно установлен в последнем mac high sierra, используя.
brew unlink imagemagick
затем установите последнюю версию imagemagic6, используя команду ниже
brew install [email protected] && brew link [email protected] --force
Затем установите gem rmagick, используя команду ниже
gem install rmagick
Он будет работать отлично.
Ответ 6
yah это решает мою проблему:
MacOS X Sierra:
brew uninstall imagemagick
brew install [email protected]
brew link [email protected] --force
Ответ 7
В ImageMagick 7 многое изменилось, как этот путь: include/.../wand
и wand/MagickWand.h
в настоящий момент жестко привязан к rmagic gem. В моем случае невозможно было обновить драгоценный камень, так как проект довольно старый. Поэтому я закончил установку старой версии ImageMagic.
Вы можете установить последнюю версию из 6.x.x:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/6f014f2b7f1f9e618fd5c0ae9c93befea671f8be/Formula/imagemagick.rb
Вы также можете привязать его для последующего использования:
brew pin imagemagick
Ответ 8
Что-то изменилось с помощью 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
Ответ 9
$ 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
Ответ 10
Пожалуйста, следуйте ниже и измените часть в соответствии с вашими потребностями.
brew unlink imagemagick
brew install [email protected] && brew link [email protected] --force
export PKG_CONFIG_PATH=/usr/local/Cellar/[email protected]/6.9.9-24/lib/pkgconfig
gem install rmagick -v '2.15.4'
Ответ 11
У меня еще нет репутации, чтобы оставить это как комментарий, улучшающий другой ответ, но ответ @Evgeniy28 работал у меня на Sierra только после установки pkg-config, который по умолчанию не устанавливается по новой Sierra машина.
Итак:
brew install pkg-config
brew uninstall imagemagick
brew install [email protected]
brew link [email protected] --force
Success
$ 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
Ответ 12
RMagick зависит от устаревшей версии imagemagick версии 6. (см. Ниже). Homebrew предлагает этот пакет только для бочонков, который вы можете установить вместе с:
brew install [email protected]
Вывод сборки будет содержать раздел Caveats (также доступен по brew info [email protected]
если вы очистили вывод):
==> Caveats
[email protected] 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 [email protected] first in your PATH run:
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
For compilers to find [email protected] you may need to set:
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
For pkg-config to find [email protected] you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"
Вместо принудительного связывания, которое потенциально может вызвать проблемы с другим программным обеспечением, которое поддерживает более новые версии imagemagick, вы можете использовать предложенный export
чтобы гем RMagick подобрал старую версию во время сборки:
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"
gem install rmagick
- Помогите внести свой вклад в обновление, если вы знаете Ruby и C!
Ответ 13
Вот как я решил (после многих попыток и неудач) на macOS High Sierra 10.13.3 с Homebrew:
- похоже, что RMagick 2.16.0 несовместим с новейшей версией ImageMagick (версия 7): http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
- Я удалил imagemagick:
brew uninstall imagemagick
- Затем я установил Imagemagick с помощью этой формулы: https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
-
gem install rmagick
Если вы уже установили старую версию Imagemagick, это должно работать: fooobar.com/questions/29932/...
Ответ 14
Установите imagemagick версии 6, потому что версия 7 не совместима:
$ brew install [email protected]
Не следует связывать --force более старую версию, потому что это изменит двоичные файлы на вашем пути, и хороший brew doctor
.
Ссылка на заголовки и библиотеки из версии 6, которая была установлена при сборке собственного расширения gem:
$ PKG_CONFIG_PATH=/usr/local/Cellar/[email protected]/6.9.10-14/lib/pkgconfig/gem install rmagick -v '2.16.0'
Примечание: работал для меня без указания папки lib и include, потому что за это отвечает pkgconfig.
Примечание: 6.9.10-14 является последней версией imagemagick @6, но вы можете сменить ее, если вам нужна другая версия
Ответ 15
в версии 7.0.7-1 вы можете создать символическую ссылку, но компиляция завершится неудачей.
cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagicCore/ magick
Ответ 16
Там нет необходимости связывать или отделять что-либо, следуя инструкциям из сценария установки,
brew install [email protected]
LDFLAGS="-L/usr/local/opt/[email protected]/lib" CPPFLAGS="-I/usr/local/opt/[email protected]/include" PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig" gem install rmagick
Ответ 17
Я полностью объясняю процесс установки в ImageMagick install в centos.
тем не мение...
после установки Установите библиотеку Imagick & ImageMagick-devel & ImageMagick PHP, как показано ниже:
# 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" на "disable_functions", php.ini ".
# phpize
# ./configure --with-php-config=/usr/local/php56/bin/php-config
...
Удачи...
Ответ 18
Для версии 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.
Ответ 19
Получена та же ошибка для сборки Alpine 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. так что, надеюсь, это будет исправлено в ближайшее время.
Ответ 20
Во-первых, вам не нужно удалять 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.
Во-вторых, не форсировать ссылку imagemagick, особенно не 6. EDIT: см. ¹
Вам нужно установить 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 не выполняется, но это несущественно.
¹: Работы по строительству, путь dylib. Однако поиск RMagick является неправильным. Поднял Проблема № 278, чтобы уточнить, может ли это быть исправлено. В противном случае необходима ручная символическая ссылка libMagickWand и т.д. Могут быть все же безопаснее вручную связывать конкретные библиотеки, чем brew link --force
.