Вопрос или проблема
Я пытаюсь установить imagemagick для perlbrew, так как приложению нужна более новая версия perl, чем та, что была в моей версии ubuntu, и это приложение также требует использования imagemagick.
Я использую ubuntu jammy и perl 5.36.3 с perlbrew.
Когда я пытаюсь установить imagemagick с perlbrew, я получаю эту ошибку:
cpan[1]> install Image::Magick
Reading '/home/me/.cpan/Metadata'
Database was generated on Thu, 09 Jan 2025 03:17:02 GMT
Running install for module 'Image::Magick'
Checksum for /home/me/.cpan/sources/authors/id/J/JC/JCRISTY/Image-Magick-7.1.1-28.tar.gz ok
Scanning cache /home/me/.cpan/build for sizes
............................................................................DONE
'YAML' not installed, will not store persistent state
Configuring J/JC/JCRISTY/Image-Magick-7.1.1-28.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Warning (mostly harmless): No library found for -lMagickCore-7.Q16HDRI
Generating a Unix-style Makefile
Writing Makefile for Image::Magick
Writing MYMETA.yml and MYMETA.json
JCRISTY/Image-Magick-7.1.1-28.tar.gz
/home/me/perl5/perlbrew/perls/perl-5.36.3/bin/perl Makefile.PL -- OK
Running make for J/JC/JCRISTY/Image-Magick-7.1.1-28.tar.gz
cp Magick.pm blib/lib/Image/Magick.pm
AutoSplitting blib/lib/Image/Magick.pm (blib/lib/auto/Image/Magick)
Running Mkbootstrap for Magick ()
chmod 644 "Magick.bs"
"/home/me/perl5/perlbrew/perls/perl-5.36.3/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Magick.bs blib/arch/auto/Image/Magick/Magick.bs 644
"/home/me/perl5/perlbrew/perls/perl-5.36.3/bin/perl" "/home/me/perl5/perlbrew/perls/perl-5.36.3/lib/5.36.3/ExtUtils/xsubpp" -typemap '/home/me/perl5/perlbrew/perls/perl-5.36.3/lib/5.36.3/ExtUtils/typemap' -typemap '/home/me/.cpan/build/Image-Magick-7.1.1-3/typemap' Magick.xs > Magick.xsc
mv Magick.xsc Magick.c
cc -c -I/usr/local/include/ImageMagick-7 -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libxml2 -I"/usr/include/ImageMagick-7" -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/freetype2 -g -O2 -Wall -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -O2 -DVERSION=\"7.1.1\" -DXS_VERSION=\"7.1.1\" -fPIC "-I/home/me/perl5/perlbrew/perls/perl-5.36.3/lib/5.36.3/x86_64-linux/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H Magick.c
Magick.xs:56:10: fatal error: MagickCore/MagickCore.h: No such file or directory
56 | #include <MagickCore/MagickCore.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:351: Magick.o] Error 1
JCRISTY/Image-Magick-7.1.1-28.tar.gz
/usr/bin/make -- NOT OK
Failed during this command:
JCRISTY/Image-Magick-7.1.1-28.tar.gz : make NO
с помощью cpan или cpanm можно установить модуль Alien::ImageMagick
, который автоматически настроит imagemagick для perlbrew.
благодарю @thecarpy за помощь в решении этой проблемы.
Ответ или решение
Проблема, с которой вы столкнулись при установке ImageMagick для perlbrew с использованием Ubuntu Jammy и Perl версии 5.36.3, связана с отсутствием необходимых библиотек и зависимостей, в частности заголовочного файла MagickCore/MagickCore.h
, который является частью пакета ImageMagick.
Причины Ошибки
-
Отсутствие Библиотеки: Лог ошибок указывает на отсутствие
MagickCore/MagickCore.h
. Это означает, что библиотека ImageMagick не установлена должным образом в системе. -
Неудовлетворительные Зависимости: Модуль
Image::Magick
для Perl требует установленных библиотек ImageMagick, которые разработаны как C-библиотеки. Предполагается наличие библиотек и файлов заголовков в системных путях. -
Зависимость от Магнитуды (quantum depth) и HDRI: Если параметры HDRI и quantum depth, которые используются при установке, не соответствуют установленной версии ImageMagick, компиляция может завершиться неудачей.
Решения
Установка ImageMagick
-
Установите базовую версию ImageMagick:
sudo apt update sudo apt install imagemagick sudo apt install libmagickwand-dev
Пакет
libmagickwand-dev
обеспечивает заголовочные файлы и библиотеки, необходимые для разработки приложений на базе ImageMagick. -
Проверьте корректность установки: После установки используйте команду
pkg-config --cflags --libs MagickWand
для проверки путей и параметров компиляции, необходимых для сборки модулей на основе ImageMagick.
Установка через CPAN
-
Установите ‘Alien::ImageMagick’: Этот модуль оптимизирует установку модуля
Image::Magick
за счёт автоматической настройки зависимостей.cpanm Alien::ImageMagick
-
Переустановите ‘Image::Magick’:
cpanm Image::Magick
Эти шаги должны обеспечить установку всех нужных зависимостей консистентно и без ошибок, учитывая предыдущую установку
Alien::ImageMagick
.
Общие Рекомендации
- Обновите Систему: Следите за тем, чтобы все пакеты были обновлены, так как это может решить многие проблемы совместимости.
- Проверьте Пакеты: Убедитесь, что все необходимые пакеты для компиляции, такие как
build-essential
,perl-dev
, также установлены. - Используйте виртуальные среды: Если работаете с несколькими версиями Perl, perlbrew предоставляет возможность управлять ими эффективно. Убедитесь, что выбранная версия Perl правильно активирована.
Эти рекомендации и шаги должны помочь вам устранить проблемы с установкой ImageMagick для Perl под управлением perlbrew на системе Ubuntu Jammy. Убедитесь, что вы следуете всем указаниям и выполняете их в правильной последовательности, чтобы избежать потенциальных конфликтов и ошибок в будущем.