ошибка при установке imagemagick с помощью perlbrew

Вопрос или проблема

Я пытаюсь установить 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.

Причины Ошибки

  1. Отсутствие Библиотеки: Лог ошибок указывает на отсутствие MagickCore/MagickCore.h. Это означает, что библиотека ImageMagick не установлена должным образом в системе.

  2. Неудовлетворительные Зависимости: Модуль Image::Magick для Perl требует установленных библиотек ImageMagick, которые разработаны как C-библиотеки. Предполагается наличие библиотек и файлов заголовков в системных путях.

  3. Зависимость от Магнитуды (quantum depth) и HDRI: Если параметры HDRI и quantum depth, которые используются при установке, не соответствуют установленной версии ImageMagick, компиляция может завершиться неудачей.

Решения

Установка ImageMagick

  1. Установите базовую версию ImageMagick:

    sudo apt update
    sudo apt install imagemagick
    sudo apt install libmagickwand-dev

    Пакет libmagickwand-dev обеспечивает заголовочные файлы и библиотеки, необходимые для разработки приложений на базе ImageMagick.

  2. Проверьте корректность установки: После установки используйте команду pkg-config --cflags --libs MagickWand для проверки путей и параметров компиляции, необходимых для сборки модулей на основе ImageMagick.

Установка через CPAN

  1. Установите ‘Alien::ImageMagick’: Этот модуль оптимизирует установку модуля Image::Magick за счёт автоматической настройки зависимостей.

    cpanm Alien::ImageMagick
  2. Переустановите ‘Image::Magick’:

    cpanm Image::Magick

    Эти шаги должны обеспечить установку всех нужных зависимостей консистентно и без ошибок, учитывая предыдущую установку Alien::ImageMagick.

Общие Рекомендации

  • Обновите Систему: Следите за тем, чтобы все пакеты были обновлены, так как это может решить многие проблемы совместимости.
  • Проверьте Пакеты: Убедитесь, что все необходимые пакеты для компиляции, такие как build-essential, perl-dev, также установлены.
  • Используйте виртуальные среды: Если работаете с несколькими версиями Perl, perlbrew предоставляет возможность управлять ими эффективно. Убедитесь, что выбранная версия Perl правильно активирована.

Эти рекомендации и шаги должны помочь вам устранить проблемы с установкой ImageMagick для Perl под управлением perlbrew на системе Ubuntu Jammy. Убедитесь, что вы следуете всем указаниям и выполняете их в правильной последовательности, чтобы избежать потенциальных конфликтов и ошибок в будущем.

Оцените материал
Добавить комментарий

Капча загружается...