Не удается установить rmagick после обновления сервера
Я использую сервер Debian и через некоторое время обновил все пакеты (apt-get update
, apt-get upgrade
, apt-get distro-upgrade
). Тогда rmagick больше не работал, потому что imagemagick был обновлен.
Итак, я побежал:
gem uninstall rmagick
bundle install
Тогда я получил это:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 0.0.0. Can't find Magick-config in /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
*** 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/local/bin/ruby
extconf failed, exit code 1
Gem files will remain installed in /srv/www/www.example.com/shared/vendor/bundle/ruby/2.1.0/gems/rmagick-2.13.3 for inspection.
Results logged to /srv/www/www.example.com/shared/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0-static/rmagick-2.13.3/gem_make.out
An error occurred while installing rmagick (2.13.3), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.13.3'` succeeds before bundling.
Это cat mkmf.log
:
checking for Ruby version >= 1.8.5... -------------------- yes
--------------------
find_executable: checking for gcc... -------------------- yes
--------------------
find_executable: checking for Magick-config... -------------------- no
--------------------
Can't install RMagick 0.0.0. Can't find Magick-config in /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Кто-нибудь может мне с этим помочь?
--- ОБНОВЛЕНИЕ 1 ---
После установки некоторых графических элементов я получил немного больше:
apt-get install graphicsmagick-libmagick-dev-compat
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libmagick++-6-headers libmagick++-6.q16-dev
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
libmagick++-dev libmagickcore-dev
The following NEW packages will be installed:
graphicsmagick-libmagick-dev-compat
0 upgraded, 1 newly installed, 2 to remove and 1 not upgraded.
Need to get 0 B/26.2 kB of archives.
After this operation, 267 kB disk space will be freed.
Do you want to continue? [Y/n]
Это bundle install
выход:
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 stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no
Can't install RMagick 0.0.0. 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/local/bin/ruby
extconf failed, exit code 1
Это помогает нам в любом случае?
* --- Обновление 2 --- *
После установки graphicsmagick-libmagick-dev-compat
а также libmagickcore-dev
отдельно я пытался установить libmagick++-dev
apt-get install libmagick++-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
graphicsmagick-libmagick-dev-compat
The following NEW packages will be installed:
libmagick++-dev
0 upgraded, 1 newly installed, 1 to remove and 1 not upgraded.
Need to get 0 B/121 kB of archives.
After this operation, 115 kB of additional disk space will be used.
3 ответа
Для тех, кто столкнется с этой проблемой в будущем: это заняло у меня много времени, но это исправлено. Вот что я сделал:
sudo apt-get purge imagemagick libmagickcore-dev libmagickwand-dev
sudo rm -R /usr/include/ImageMagick-6/magick
sudo ln -s /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/Magick-config /usr/bin/Magick-config
sudo apt-get install imagemagick libmagickcore-dev libmagickwand-dev
Проблема проста. Magick-config не найден нигде в вашей системе. Когда вы удалили imagemagick, он также был удален - и, очевидно, вы не установили его снова с imagemagick. Чтобы решить эту проблему, установите следующий пакет:
sudo apt-get install libmagick++-dev graphicsmagick-libmagick-dev-compat libmagickcore-dev
Затем повторите процедуру установки gem.
Может быть, вы устанавливаете 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
Это будет работать.