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

Использование mozjpeg вместо jpeg-turbo, включая удовлетворение зависимостей

Я пытаюсь использовать mozjpeg как заменяющую библиотеку для jpeg-turbo. Я прекрасно могу получить исходные коды и компилировать их по мере необходимости и даже создать из него файл deb, который я могу использовать для установки пакета (например, apt-get install ./mozjpeg_3.2_amd64.deb).

Для ясности отметим, что эти два пакета должны обеспечивать один и тот же интерфейс и, следовательно, быть функционально эквивалентными. Соответственно, зависимость от jpeg-turbo должна удовлетворяться с помощью mozjpeg.

Хорошо, продолжаем, когда я продолжу устанавливать зависимые пакеты (например, заголовки разработки ghostscript, libgs-dev), Я сталкиваюсь с ошибками, поскольку они объявили зависимость от libjpeg62-turbo-dev:

dpkg: error processing archive /tmp/apt-dpkg-install-HuzNRO/0-libjpeg62-turbo-dev_1%3a1.5.1-2_amd64.deb (--unpack):
trying to overwrite '/usr/include/jerror.h', which is also in package mozjpeg 3.2-20170219

То, что здесь возникает конфликт, конечно, логично. Есть ли способ предотвратить это? Могу ли я сообщить системе зависимостей, что mozjpeg удовлетворяет зависимости от jpeg-turbo, чтобы любые пакеты, зависящие от jpeg-turbo, устанавливались с использованием замены?

Заранее спасибо.

Зависимости кодируются сопровождающими пакета в самих пакетах как зависимость от конкретного имени и / или версии пакета. Насколько мне известно, не существует метода, с помощью которого вы, как конечный пользователь, могли бы управлять такими зависимостями, например, из файла конфигурации apt-get.

Можно создать отношения зависимости от конкретной функциональности, а не от имени конкретного пакета, с помощью virtual-package когда несколько пакетов предлагают идентичную функциональность, но обычно это требует координации с другими сопровождающими пакета.

Однако для вашей собственной среды вы можете попробовать это без такой координации:

В руководстве есть ряд предупреждений, но при сборке пакета для mozjpeg вы можете использовать Provides: jpeg-turbo вариант, чтобы сделать его виртуальным пакетом, который после установки будет удовлетворять требованиям зависимостей для пакетов, которым требуется jpeg-turbo.