digital-garden/dev/linux/rhel/Установка утилиты mozjpeg на RHEL.md
Struchkov Mark 1536a6c68c
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-09-27 20:25:32 +03:00

127 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- maturity/🌱
- "#content/problem"
date: 2024-09-25
zero-link:
- "[[00 Разработка]]"
parents:
linked:
---
mozjpeg не устанавливается из обычных пакетных менеджеров для RHEL, его необходимо собирать вручную.
**Mozjpeg** использует **CMake** для сборки. Установим необходимые утилиты
```shell
sudo yum install cmake nasm make gcc git
```
Склонируем репозиторий:
```shell
git clone https://github.com/mozilla/mozjpeg.git
```
Соберем и установим **mozjpeg**
```shell
cd mozjpeg
mkdir build && cd build
cmake -G"Unix Makefiles" ..
make
sudo make install
```
> [!INFO] Путь установки
> По умолчанию **mozjpeg** устанавливается в каталог /opt/mozjpeg.
Добавим mozjpeg в PATH
```shell
export PATH=/opt/mozjpeg/bin:$PATH
```
Проверим, что все установилось успешно
```shell
cjpeg -version
```
## Проблема при установке
Во время запуска cmake я получил следующую проблему.
```shell
$ 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**:
```shell
-- 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")
```
Я попытался установить нужные пакеты, но они уже были установлены.
```shell
sudo yum install zlib-devel libpng-devel
```
Я проверил наличие библиотек и заголовочных файлов. Они также были на месте.
```shell
ls /usr/lib64/libz.*
ls /usr/lib64/libpng.*
ls /usr/include/zlib.h
ls /usr/include/png.h
```
Я попробовал установить **pkg-config**, который помогает **CMake** находить пути к библиотекам и заголовочным файлам. И проверил, что **pkg-config** возвращает пути к библиотекам.
```shell
sudo yum install pkgconfig
pkg-config --libs zlib
pkg-config --libs libpng
```
Я пытался использовать cmake3 указывая пути до библиотек
```shell
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 файлов.
```shell
cmake -G"Unix Makefiles" -DPNG_SUPPORTED=OFF ..
```
И это в итоге помогло.
***
## Мета информация
**Область**:: [[../../../meta/zero/00 Разработка|00 Разработка]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-09-25]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->