Назад | Перейти на главную страницу

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

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

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

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

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