mozjpeg не устанавливается из обычных пакетных менеджеров для RHEL, его необходимо собирать вручную.

Mozjpeg использует CMake для сборки. Установим необходимые утилиты

sudo yum install cmake nasm make gcc git

Склонируем репозиторий:

git clone https://github.com/mozilla/mozjpeg.git

Соберем и установим mozjpeg

cd mozjpeg
mkdir build && cd build
cmake -G"Unix Makefiles" ..
make
sudo make install

Путь установки

По умолчанию mozjpeg устанавливается в каталог /opt/mozjpeg.

Добавим mozjpeg в PATH

export PATH=/opt/mozjpeg/bin:$PATH

Проверим, что все установилось успешно

cjpeg -version

Проблема при установке

Во время запуска cmake я получил следующую проблему.

$ cmake -G"Unix Makefiles" ..
 
....
 
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11")  
-- Found PNG: /usr/lib64/libpng.so (found suitable version "1.6.37", minimum required is "1.6") 
-- PNG reading support enabled (PNG_SUPPORTED = 1)
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11")
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find PNG (missing: PNG_LIBRARY) (Required is at least version
  "1.6")
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindPNG.cmake:159 (find_package_handle_standard_args)
  CMakeLists.txt:778 (find_package)
 
 
-- Configuring incomplete, errors occurred!

Проблема связана с отсутствием необходимых библиотек разработки для zlib и libpng. Хотя из вывода CMake видно, что сначала он находит библиотеки ZLIB и PNG:

-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11")  
-- Found PNG: /usr/lib64/libpng.so (found suitable version "1.6.37", minimum required is "1.6") 

Я попытался установить нужные пакеты, но они уже были установлены.

sudo yum install zlib-devel libpng-devel

Я проверил наличие библиотек и заголовочных файлов. Они также были на месте.

ls /usr/lib64/libz.*
ls /usr/lib64/libpng.*
ls /usr/include/zlib.h
ls /usr/include/png.h

Я попробовал установить pkg-config, который помогает CMake находить пути к библиотекам и заголовочным файлам. И проверил, что pkg-config возвращает пути к библиотекам.

sudo yum install pkgconfig
pkg-config --libs zlib
pkg-config --libs libpng

Я пытался использовать cmake3 указывая пути до библиотек

cmake3 -G"Unix Makefiles" \
  -DZLIB_LIBRARIES=/usr/lib64/libz.so \
  -DZLIB_INCLUDE_DIR=/usr/include \
  -DPNG_LIBRARY=/usr/lib64/libpng.so \
  -DPNG_PNG_INCLUDE_DIR=/usr/include \
  ..

В итоге я решил просто отключить поддержку PNG для mozjpeg, раз с ней возникают проблемы, так как я планирую использовать mozjpeg только для сжатия jpeg файлов.

cmake -G"Unix Makefiles" -DPNG_SUPPORTED=OFF ..

И это в итоге помогло.


Мета информация

Область:: 00 Разработка
Родитель::
Источник::
Создана:: 2024-09-25
Автор::

Дополнительные материалы

Дочерние заметки