Node.js imagemin на CentOS
Я пытаюсь использовать Node.js imagemin для сжатия большого количества изображений на моем сервере. Мне нравится использовать imagemin, потому что я знаю, как указать его в определенных каталогах.
Я использую CentOS 6, и когда я запускаю свой файл, я получаю сообщение об ошибке:
node_modules / imagemin / node_modules / imagemin-pngquant / node_modules / pngquant-bin / vendor / pngquant: /lib64/libc.so.6: версия `GLIBC_2.14'не найдена
Кроме того, когда я установил imagemin с npm install imagemin
Я получил сообщение об ошибке:
Ошибка: pngquant не удалось собрать, убедитесь, что установлен libpng-dev
Любые идеи о том, что я могу сделать, чтобы решить эту проблему?
4 ответа
(Проблема де-факто уже решена в комментариях - но ради доработки и будущих поколений выкладываю актуальный ответ).
Ошибка: pngquant не удалось собрать, убедитесь, что установлен libpng-dev
Эта ошибка означает, что системе не хватает libpng
библиотека разработки, которая необходима для установки imagemin
Модуль Node.JS. Чтобы установить его на CentOS 6, вам нужно выполнить следующую команду:
yum install libpng-devel
Обратите внимание, что оба пакета менеджера (здесь - yum
) и название пакета (libpng-devel
) может отличаться в разных дистрибутивах Linux.
У меня была такая же проблема с CentOS 7 даже с libpng-devel
установлены. Похоже, что пакет содержит предварительно скомпилированную двоичную программу в node_modules/pngquant-bin/vendor/pngquant
что-то несовместимо с установкой Linux (CentOS 7 последняя версия).
Я решил проблему, заменив этот двоичный файл тем, который доступен для CentOS 7.
Я устанавливаю официальный пакет pngquant
с yum
, первый. Затем я устанавливаю узлы модулей. Вы можете удалить node_modules
папку, если вам нравится до установки действий. Это не обязательно, хотя.
Ошибка будет отображаться как обычно (файл программы еще не заменен):
⚠ The `node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly ⚠ pngquant pre-build test failed ℹ compiling from source ✖ Error: pngquant failed to build, make sure that libpng-dev is installed at ChildProcess.exithandler (child_process.js:206:12) at emitTwo (events.js:106:13) at ChildProcess.emit (events.js:191:7) at maybeClose (internal/child_process.js:877:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Однако после замены бинарного файла все должно быть в порядке.
sh
yum install libpng-devel pngquant
npm install
rm -rf node_modules/pngquant-bin/vendor/pngquant
ln -s /usr/bin/pngquant node_modules/pngquant-bin/vendor/pngquant
После этого вы можете запустить любую понравившуюся вам команду, "imagemin:dynamic" и т. Д. Она должна работать правильно.
Резюме
Вообще говоря, проблема, кажется, находится внутри pngquant-bin
пакет узлов. Это решение может помочь и для других дистрибутивов Linux.
Само решение заключается в установке официально поддерживаемой версии pngquant
с менеджером пакетов ОС и заменить двоичный файл внутри pngquant-bin
папка vendor после ее установки.
Обновить
Кроме того, существует недавняя проблема, которая все еще связана с pngquant
Пакет Npm. Похоже, что есть баггий релиз - заблокируйте требуемый pngquant
пакет в вашем package.json
до старой версии (последняя правильно работающая версия для вас).
Предыдущие решения не работали для меня. Я использую Centos 7,4
При выполнении выполнения
# npm install
Я получил ошибку:
✖ Ошибка: pngquant не удалось собрать, убедитесь, что libpng-dev установлен`
Пока пытаюсь установить libpng-devel
, он говорит, что он уже установлен.
Решение
Обновите версию nodejs & npm, если она использует старую версию.
Я обновил до
Версия Nodejs
[root@hosting ~]# node -v
v8.10.0
версия npm
[root@hosting ~]# npm -v
5.7.1
Проверьте установленный libpng-devel на вашем сервере.
[root@hosting ~]# rpm -qa |grep libpng
Libpng-1.5.13-7.el7_2.x86_64
Libpng-разви-1.5.13-7.el7_2.x86_64
Если вы используете epel repo, он установит последнюю версию. Для дополнительной проверки выпуска libpng
[root@hosting ~]# yum list |grep libpng
Я установил
yum install libpng12-1.2.50-10.el7.x86_64 libpng12-devel-1.2.50-10.el7.x86_64
модули перемещенных узлов
mv node_modules node_modules_bak
Затем введите
# npm install
В моем случае я использую экземпляр CentOS на Amazon WS, и здесь я столкнулся с той же проблемой. Я решил это, установив libpng12 и libpng12-devel (yum install libpng12 libpng12-devel), затем запустив yarn install (или npm install), и пакеты установились правильно.
Просто это!
Вот как я решил проблему для своего дела:
удалять node_modules
:
rm -rf node_modules
Установите следующие зависимости:
sudo dnf install libpng-devel pngquant gcc make libpng12 libpng12-devel
Перестройте зависимости. я использую yarn
:
yarn