6

我正在尝试使用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”

此外,当我使用 安装imageminnpm install imagemin,我收到一条错误消息:

错误:pngquant 构建失败,请确保已安装 libpng-dev

关于我能做些什么来解决这个问题的任何想法?

4

5 回答 5

11

(事实上​​问题已经在评论中解决了——但为了完成和后代,我发布了一个实际的答案)。

错误:pngquant 构建失败,请确保已安装 libpng-dev

这个错误说明系统缺少libpng开发库,需要安装imageminNode.JS模块。要在 CentOS 6 上安装它,您需要发出以下命令:

yum install libpng-devel

请注意,包管理器(此处为 - yum)和包名称(libpng-devel)在不同的 Linux 发行版之间可能会有所不同。

于 2015-04-29T20:50:10.837 回答
8

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替换pngquant-bin供应商文件夹中的二进制文件。

更新

另外,最近还有一个问题还是和pngquantnpm包有关。它似乎有一个错误的版本 - 将所需的pngquant包锁定package.json到旧版本(最后一个为您正确运行的版本)。

于 2017-08-08T11:36:47.087 回答
6

以前的解决方案对我不起作用。我正在使用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-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
于 2018-03-22T11:28:55.397 回答
0

以下是我为我的案例解决问题的方法:

删除node_modules

rm -rf node_modules

安装以下依赖项:

sudo dnf install libpng-devel pngquant gcc make libpng12 libpng12-devel

重建依赖关系。我使用yarn

yarn
于 2018-10-08T06:42:44.163 回答
0

就我而言,我在 Amazon WS 上使用 CentOS 实例,我在这里遇到了同样的问题。我通过安装 libpng12 和 libpng12-devel(yum install libpng12 libpng12-devel)解决了这个问题,然后运行 ​​yarn install(或 npm install)并且软件包确实安装正确。

只是这个!

于 2019-05-21T13:44:53.407 回答