Разница между скомпилированным и установленным через rpm (zypper)

В 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 (поскольку он теперь работает), но, в основном, его поведение, потому что я так или иначе видел, что это происходит и в других случаях.

2 ответа

Существует как минимум две вероятные причины различий между двумя методами:

  • Zypper заботится о зависимостях. Таким образом, если ImageMagick зависит от динамически связанной библиотеки, которой у вас нет, он извлечет ее, чтобы ImageMagick мог предоставить функцию, связанную с этой библиотекой. В этом случае исполняемый файл, полученный в результате вашей собственной компиляции, должен работать теперь, когда ImageMagick и его зависимости установлены.

  • zypper (AFAIK) не компилирует пакет, он только устанавливает предварительно скомпилированный бинарный файл. Существуют зависимости, которые необходимы только во время компиляции, чтобы иметь возможность компилировать определенные функции, обычно это заголовки библиотек (пакеты -dev или -devel). Если у вас их нет, configure может не включить эту функцию для более или менее подробного компиляции. Чтобы установить их, правильная команда выглядит так:
    # zypper in -d imagemagick

Похоже, вы забыли make clean / make mrproper после 2-го configure с другими вариантами.

Другие вопросы по тегам