Sea*_*ean 6 javascript libpng node.js centos6 imagemin
我试图使用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
关于我能做些什么来解决这个问题的任何想法?
bar*_*sny 11
(问题事实上已经在评论中解决了 - 但为了完成和后代我发布了一个实际答案).
错误:pngquant无法构建,请确保已安装libpng-dev
此错误意味着系统缺少libpng安装imageminNode.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并在pngquant-bin安装后替换vendor文件夹中的二进制文件.
此外,最近还存在一个与pngquantnpm包有关的问题.它似乎有一个错误的版本 - 锁定pngquant您package.json的旧版本所需的包(最后正确运行版本为您).
小智 6
以前的解决方案对我不起作用.我正在使用centos 7.4
执行时执行
# npm install
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
✖错误:pngquant无法构建,请确保已安装libpng-dev
在尝试安装时libpng-devel,它说它已经安装好了.
解
如果使用旧版本,请更新nodejs和npm版本.
我已更新到
Nodejs版本
[root@hosting ~]# node -v
Run Code Online (Sandbox Code Playgroud)
v8.10.0
npm版本
[root@hosting ~]# npm -v
Run Code Online (Sandbox Code Playgroud)
5.7.1
检查服务器上安装的libpng-devel.
[root@hosting ~]# rpm -qa |grep libpng
Run Code Online (Sandbox Code Playgroud)
的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
Run Code Online (Sandbox Code Playgroud)
我安装了
yum install libpng12-1.2.50-10.el7.x86_64 libpng12-devel-1.2.50-10.el7.x86_64
Run Code Online (Sandbox Code Playgroud)
移动节点模块
mv node_modules node_modules_bak
Run Code Online (Sandbox Code Playgroud)
然后输入
# npm install
Run Code Online (Sandbox Code Playgroud)