Node.js CentOS 上的图像输入
Node.js imagemin on CentOS
我正在尝试使用 Node.js imagemin 来压缩我服务器上的大量图像。我喜欢使用 imagemin 因为我知道如何将它指向特定目录。
我正在使用 CentOS 6,当我 运行 我的文件时,我收到错误:
node_modules/imagemin/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor/pngquant: /lib64/libc.so.6: version `GLIBC_2.14' not found
此外,当我安装 imagemin 和 npm install imagemin
时,我收到一条错误消息:
Error: pngquant failed to build, make sure that libpng-dev is installed
有什么办法可以解决这个问题吗?
(问题实际上已经在评论中解决了——但为了完成和后代,我发布了一个实际的答案)。
Error: pngquant failed to build, make sure that libpng-dev is installed
这个错误表示系统缺少libpng
开发库,安装imagemin
Node.JS模块需要它。要在 CentOS 6 上安装它,您需要发出以下命令:
yum install libpng-devel
请注意,包管理器(这里 - yum
)和包名称(libpng-devel
)在不同的 Linux 发行版之间可能会有所不同。
即使安装了 libpng-devel
,CentOS 7 也有同样的问题。似乎该软件包在 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 发行版有所帮助。
解决方案本身是使用 OS 包管理器安装 官方支持的 pngquant
版本 并替换 [=17] 中的二进制文件=] 安装后的 vendor 文件夹。
更新
此外,最近有一个问题仍然与 pngquant
npm 包有关。它似乎有一个错误的版本 - 将 package.json
中所需的 pngquant
包锁定到旧版本(最后一个正确的 运行ning 版本适合你)。
以前的解决方案对我不起作用。我正在使用 centos 7.4
执行时
# npm install
我收到错误:
✖ Error: pngquant failed to build, make sure that libpng-dev is installed`
在尝试安装 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-devel-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
以下是我解决问题的方法:
删除node_modules
:
rm -rf node_modules
安装以下依赖项:
sudo dnf install libpng-devel pngquant gcc make libpng12 libpng12-devel
重建依赖关系。我使用 yarn
:
yarn
就我而言,我在 Amazon WS 上使用 CentOS 实例,我在这里遇到了同样的问题。我通过安装 libpng12 和 libpng12-devel(yum install libpng12 libpng12-devel)解决了这个问题,然后 运行 yarn install(或 npm install)并且包安装正确。
就是这个!
我正在尝试使用 Node.js imagemin 来压缩我服务器上的大量图像。我喜欢使用 imagemin 因为我知道如何将它指向特定目录。
我正在使用 CentOS 6,当我 运行 我的文件时,我收到错误:
node_modules/imagemin/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor/pngquant: /lib64/libc.so.6: version `GLIBC_2.14' not found
此外,当我安装 imagemin 和 npm install imagemin
时,我收到一条错误消息:
Error: pngquant failed to build, make sure that libpng-dev is installed
有什么办法可以解决这个问题吗?
(问题实际上已经在评论中解决了——但为了完成和后代,我发布了一个实际的答案)。
Error: pngquant failed to build, make sure that libpng-dev is installed
这个错误表示系统缺少libpng
开发库,安装imagemin
Node.JS模块需要它。要在 CentOS 6 上安装它,您需要发出以下命令:
yum install libpng-devel
请注意,包管理器(这里 - yum
)和包名称(libpng-devel
)在不同的 Linux 发行版之间可能会有所不同。
即使安装了 libpng-devel
,CentOS 7 也有同样的问题。似乎该软件包在 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 发行版有所帮助。
解决方案本身是使用 OS 包管理器安装 官方支持的 pngquant
版本 并替换 [=17] 中的二进制文件=] 安装后的 vendor 文件夹。
更新
此外,最近有一个问题仍然与 pngquant
npm 包有关。它似乎有一个错误的版本 - 将 package.json
中所需的 pngquant
包锁定到旧版本(最后一个正确的 运行ning 版本适合你)。
以前的解决方案对我不起作用。我正在使用 centos 7.4
执行时
# npm install
我收到错误:
✖ Error: pngquant failed to build, make sure that libpng-dev is installed`
在尝试安装 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-devel-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
以下是我解决问题的方法:
删除node_modules
:
rm -rf node_modules
安装以下依赖项:
sudo dnf install libpng-devel pngquant gcc make libpng12 libpng12-devel
重建依赖关系。我使用 yarn
:
yarn
就我而言,我在 Amazon WS 上使用 CentOS 实例,我在这里遇到了同样的问题。我通过安装 libpng12 和 libpng12-devel(yum install libpng12 libpng12-devel)解决了这个问题,然后 运行 yarn install(或 npm install)并且包安装正确。
就是这个!