В openSUSE 11.1
Я скачиваю, компилирую и устанавливаю ImageMagick
через:
wget ftp://.../pub/graphics/ImageMagick/ImageMagick-6.7.7-0.zip
unzip ImageMagick-6.7.7-0.zip
cd ImageMagick-6.7.7-0
./configure --prefix=/usr/local/ImageMagick
make
make install
Все работает нормально, пока я не обнаружу, что JPG не поддерживается:
identify -list format | grep -i jpg
[nothing related to JPG returned]
Поэтому я перенастраиваю и перекомпилирую, используя:
./configure --prefix=/usr/local/ImageMagick --with-jpeg=yes --with-jp2=yes
make
make install
Но это ничего не меняет.
Я удаляю:
make uninstall
и установка через zypper
:
zypper install ImageMagick
Эта установленная версия 6.4.3 теперь поддерживает JPG:
identify -list format | grep -i jpg
JPG* JPEG rw- Joint Photographic Experts Group JFIF format
Есть идеи, что здесь происходит? Какова возможная причина того, что эта способность ImageMagick
не было при компиляции из исходников, но было при установке из rpm?
Обратите внимание, что меня не очень заботит ImageMagick (поскольку он теперь работает), но в целом его поведение, потому что так или иначе я видел, как это происходило и в других случаях.
Существует как минимум две вероятные причины различий между двумя методами:
zypper позаботится о зависимостях. Таким образом, если ImageMagick зависит от динамически подключаемой библиотеки, которой у вас нет, он получит ее, чтобы ImageMagick мог предоставить функцию, связанную с этой библиотекой. В этом случае исполняемый файл, полученный в результате вашей собственной компиляции, должен работать теперь, когда установлен ImageMagick и его зависимости.
zypper (AFAIK) не компилирует пакет, а только устанавливает предварительно скомпилированный двоичный файл. Существуют зависимости, которые необходимы только во время компиляции, чтобы иметь возможность компилировать определенные функции, обычно заголовки библиотек (-dev или -devel пакеты). Если у вас их нет, настроить может не включать эту функцию для компиляции с большей или меньшей степенью подробности. Чтобы установить их, кажется, что правильная команда:
# zypper in -d imagemagick
Похоже, ты забыл make clean
/ make mrproper
после 2-го configure
с другими вариантами.