Прежде всего, версия IM, которая в настоящее время находится на веб-сайте ImageMagick (версия 7.0.8), предназначена для MacOS High Sierra. Поэтому неудивительно, что у вас возникли проблемы с установкой на Мохаве. (Однако FWIW, текущая версия Homebrew (IM 7) и MacPorts (IM 6) работают на Mojave. Но, как и вы, я не знаю, как сделать обработку этих версий делегатами действительно переносимой.)
Причина, по которой вы не можете экспортировать DYLD_LIBRARY_PATH
, заключается в том, что Apple «Защита целостности системы» (SIP) добавила ее в более новые версии macOS (El Capitan и более поздние версии). По умолчанию SIP запрещает делать такие вещи, как изменение переменной env DYLD_LIBRARY_PATH
. Хотя можно отключить SIP , Apple не рекомендует делать это.
Однако вы можете изменить magick
и его dylibs вручную, используя install_name_tool
, чтобы IM 7.0.8 нормально работал на Mojave. Вот как (в bash
):
# magick: set the correct path to libMagickCore.dylib
install_name_tool -change \
/ImageMagick-7.0.8/lib/libMagickCore-7.Q16HDRI.6.dylib \
@executable_path/../lib/libMagickCore-7.Q16HDRI.6.dylib \
/Users/myname/ImageMagick-7.0.8/bin/magick
# magick: set the correct path to libMagickWand.dylib
install_name_tool -change \
/ImageMagick-7.0.8/lib/libMagickWand-7.Q16HDRI.6.dylib \
@executable_path/../lib/libMagickWand-7.Q16HDRI.6.dylib \
/Users/myname/ImageMagick-7.0.8/bin/magick
# libMagickWand.dylib: set the correct ID
install_name_tool -id \
@executable_path/../lib/libMagickWand-7.Q16HDRI.6.dylib \
/Users/myname/ImageMagick-7.0.8/lib/libMagickWand-7.Q16HDRI.6.dylib
# libMagickWand.dylib: set the correct path
install_name_tool -change \
/ImageMagick-7.0.8/lib/libMagickCore-7.Q16HDRI.6.dylib \
@executable_path/../lib/libMagickCore-7.Q16HDRI.6.dylib \
/Users/myname/ImageMagick-7.0.8/lib/libMagickWand-7.Q16HDRI.6.dylib
# libMagickCore.dylib: set the correct ID
install_name_tool -id \
@executable_path/../lib/libMagickCore-7.Q16HDRI.6.dylib \
/Users/myname/ImageMagick-7.0.8/lib/libMagickCore-7.Q16HDRI.6.dylib
Теперь это работает:
$ /Users/myname/ImageMagick-7.0.8/bin/magick logo: test.jpg
$ open test.jpg
$ # (Preview opens a nice picture of the ImageMagick logo.)
Это изменяет пути к dylibs относительно местоположения команды magick
. Пока вы сохраняете структуру каталогов папки ImageMagick без изменений, она теперь должна быть полностью переносимой.
Вы можете легко поместить эти пять install_name_tools
команд в небольшой bash
скрипт. Я оставлю это как упражнение для читателя. :)