Я скомпилировал ImageMagick на CentOS, и RMagick не установился

16

Я установил ImageMagick через (с использованием ImageMagick 6.7.3-7)

./configure --prefix=/usr && make && make install

Когда я пытаюсь

gem install imagemagick

я получил

Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... yes
checking for ImageMagick version >= 6.4.9... yes
checking for HDRI disabled version of ImageMagick... yes
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no

Can't install RMagick 2.13.1. Can't find MagickWand.h.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/bin/ruby

И это несмотря на то, что MagickWand.h уже есть в системе в /usr/include/ImageMagick/wand/MagickWand.h. Итак, вопрос в том, как я могу заставить компилятор заглядывать туда?

Кен Ли
источник

Ответы:

26

Возникла та же проблема с CentOS с использованием последней версии всего (по состоянию на декабрь 2011 г.), и она была исправлена ​​с помощью:

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"

в моем файле .bashrc, чтобы взять MagickCore.pc, затем создал две символические ссылки:

ln -s /usr/local/include/ImageMagick/wand /usr/local/include/wand
ln -s /usr/local/include/ImageMagick/magick /usr/local/include/magick

И вуаля, MagickWand.h был найден, MagickCore.pc был поднят ... гем успешно установлен.

Я полагаю, что другим решением было бы изменить параметры конфигурации, установленные во время установки ImageMagick, но мне не хватает системного администратора, чтобы понять, какой будет правильный вариант и расположение для этих файлов. После 45 минут поисков я не мог понять, где эти файлы должны находиться, чтобы их автоматически выбирала система установки gem.

Ура!

РЕДАКТИРОВАТЬ: 2014-10-01

Просто сделал это снова для CentOS 7, и lnкоманды выше не нужны. Однако я столкнулся с проблемой, в результате которой я получил сообщение «Пакет MagickCore не найден в пути поиска pkg-config». на бегу sudo gem install rmagick.

Проблема заключалась в перезагрузке среды в / etc / sudoers. После запуска, sudo visudoчтобы отредактировать файл sudoers, я добавил Defaults env_keep += "PKG_CONFIG_PATH"в соответствующий раздел, обновил защищенный путь , добавив / usr / local / bin, и затем установка работала как чудо.

Irongaze.com
источник
У меня была та же проблема с RedHat 6, и ваше решение сработало для меня. Огромное спасибо!
Callmeed
Удивительно, это даже сработало как заклинание у горного льва! Мне нужно выполнить все приведенное выше утверждение для установки rmagick gem.
Хендра Узия
Попробовал это и получил "/ usr / local / bin / Magick-config: строка 41: pkg-config: команда не найдена / usr / local / bin / Magick-config: строка 47: pkg-config: команда не найдена / usr / local / bin / Magick-config: строка 50: pkg-config: команда не найдена / usr / local / bin / Magick-config: строка 53: pkg-config: команда не найдена "
Джонни
13

ImageMagick обычно помещает MagickCore здесь:

/usr/local/lib/pkgconfig/MagickCore.pc

Если вашего там нет, вы можете найти его так:

find / -name MagickCore.pc

Теперь вы знаете свой путь к pkgconfig:

/usr/local/lib/pkgconfig

Установите среду при установке гема:

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig gem install rmagick
joelparkerhenderson
источник
Благодарность! Работал для меня на изображении Bitnami Ubuntu 12.04 ..
JD
Благодарность! подобное здесь сработало: find / usr / -name MagickCore.pc PKG_CONFIG_PATH = / usr / lib / x86_64-linux-gnu / pkgconfig / bundle
MegaTux,
7

Для CentOS я решил эту проблему, установив пакет ImageMagick-devel:

yum install ImageMagick-devel

Munish
источник
1
это лучший ответ :)
kovpack
2

Ключ находится в выходных данных конфигурации, где написано «проверка на наличие wand / MagickWand.h» - очевидно, что каталог ImageMagick не ожидается в / usr / include, что означает, что вам нужно либо переместить содержимое этого каталога на уровень, либо вы Нужно самому установить ImageMagick. Помещать вещи непосредственно в / usr, как правило, плохая идея для всего, что не предусмотрено самой системой - если вы разделяете все вещи, которые вы добавляете в / usr / local, и оставляете / usr в основном в одиночку, вы обнаружите, что система намного проще для администрирования, так как вы сможете (долго после того, как вы забыли об этом) выяснить, что вы добавили против того, что было в системе.

JKH
источник
Хороший совет, хотя вы до сих пор не ответили на вопрос, как можно заставить компилятор искать заголовочный файл в определенных каталогах.
Кен Ли
3
Что ж, все вызовы компилятора происходят через команду gem (вы заставляете компилятор искать альтернативные местоположения с флагом -I, но этот пользователь не использует компилятор напрямую), и лучше всего настроить его с помощью команды configure, например эта доброта происходит без необходимости что-либо менять. Использование переменной env PKG_CONFIG_PATH, которую настраивает утилита, может помочь, если есть файл MagickCore.pc. "find / usr -name MagickCore.pc", а затем посмотреть, существует ли он, а затем добавить каталог, в котором он находится, с помощью "setenv PKG_CONFIG_PATH / path / to / where / find / found / it"
jkh
Я обновил PKG_CONFIG_PATH до /Dir/to/where/found/MagickCore.pc и по-прежнему получаю сообщение «Не удается установить RMagick 2.13.1. Не удается найти MagickWand.h». Любые предложения, почему он не может быть получен и что еще я могу попробовать .. Не знаете, как использовать опцию -l?
p101
Хммм! Это должно было сработать. Вопрос: Если вы введете ./configure --help, в нем перечислены какие-либо параметры конфигурации для ImageMagick? Если это так, вы можете указывать непосредственно на каталог ImageMagick в / usr / local из скрипта configure.
2012 года
Thnx jkh .. Интересно, что я не нашел configure в rmagick, так что, вероятно, вы имеете в виду imagemagick. Я создал новый вопрос здесь stackoverflow.com/questions/9561386/rmagick-installation . Был бы признателен, если вы можете посмотреть. Благодарность!
p101
1

Возможно, вы устанавливаете ImageMagick версии 7.xx, которая генерирует разные имена папок в вашей usr/lib/local/include/ImageMagick7.x.xпапке. Например

В ImageMagick6.xx версии мы magick, по wandимени папки, где в ImageMagick7.xx версии назвала это MagickCore, MagickWand. Так что это обновление вызывает проблему при установке некоторых драгоценных камней, как здесь. Который использует magick/some_header.hили wand/some_header.h(означает, что они не обновляются с новой версией 7.xx ImageMagick). Вот почему мы получаем эту ошибку:

`` `

checking for outdated ImageMagick version (<= 6.4.9)... no
checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
 .... 
checking for wand/MagickWand.h... no

`` `

и в файле журнала что-то вроде этого:

error: 'MagickCore/method-attribute.h' file not found
#include "MagickCore/method-attribute.h"
         ^

Решение

Установите версию ImageMagick6.xx в своей системе с официального сайта: https://www.imagemagick.org/download/ и установите ее с помощью следующих команд (после распаковки zip / tar):

./configure
make 
make install

Тогда делай

gem install rmagick

Это будет работать.

Шехар Прасад Раджак
источник
Я должен был запустить sudo ldconfig /usr/local/libпослеsudo make install
sequielo
0
        1) install by installer

http://cactuslab.com/imagemagick/

2) попробуй гем установить rmagick

если проверка на палочку / MagickWand.h ... нет
типа

mdfind MagickWand.h

найти что-то вроде

/Users/user/ImageMagick-6.8.3/include/ImageMagick-6/wand/MagickWand.h

и введите в терминале

C_INCLUDE_PATH=/Users/user/ImageMagick-6.8.3/include/ImageMagick-6/ gem install rmagick

если после этого у вас возникла эта ошибка (потому что она была) «Пакет MagickCore не найден в пути поиска pkg-config».

тип

mdfind MagickCore.pc

найти что-то вроде /opt/ImageMagick/lib/pkgconfig/MagickCore.pc

и, наконец, в терминале типа:

PKG_CONFIG_PATH=/opt/ImageMagick/lib/pkgconfig/ gem install rmagick
Андрей
источник
1
Эта команда mdfindпредназначена только для MacOSX, она не существует в вариантах Linux.
SLM
как сказал @slm, пожалуйста, перепишите свой ответ, чтобы он помог QA.
Лоренцо фон Маттерхорн
0

Я устанавливал Redmine под Mac OS X горный лев ...

Сбой установки на rmagick ...

После многих неприятностей он работал, устанавливая "homebrew", но НЕ устанавливая rmagick через homebrew. Вместо этого я установил «pkg-config» через homebrew, потому что rmagick жаловался на это.

Команды:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
brew doctor
brew install pkg-config
sudo gem install rmagick

Затем Redmine продолжил установку без проблем.

Jonny
источник
0

Перед установкой rmagic вы должны установить imagic в вашей системе, установка imagick варьируется в зависимости от вашей операционной системы. Затем вам необходимо установить некоторые библиотеки, которые внутренне поддерживают ruby, для объединения библиотек обработки изображений в вашей системе. Для установки этих библиотек используйте следующую команду Для linux: sudo apt-get install libmagickwand-dev imagemagick Для Centos: yum install libmagickwand-dev imagemagick

Затем вы должны установить gem rmagick с помощью следующей команды: gem install rmagick Это работает для меня, и я успешно установил rmagick ...

Амардип Джадхав
источник
0

Ближайший к @ Irongaze.com ответ! В моем Arch Linux я создал эти две символические ссылки:

$ sudo ln -s /usr/include/ImageMagick-6/wand /usr/include/wand
$ sudo ln -s /usr/include/ImageMagick-6/magick /usr/include/magick

Затем bundleснова запускается и rmagickисправляется установленным.

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