ruby-on-rails - 生产中 image_optim_pack 丢失二进制文件错误

标签 ruby-on-rails image-optimization

我正在尝试使用回形针优化器部署 Rails 应用程序,但它给了我一个关于缺少二进制文件的错误。我已经捆绑了 image_optim_pack 来提供二进制文件,但仍然得到这个:

ImageOptim::BinResolver::Error occurred
pngcrush worker: `pngcrush` not found; please provide proper binary or di=
sable this worker (--no-pngcrush argument or `:pngcrush =3D> false` throu=
gh options)
advpng worker: `advpng` not found; please provide proper binary or disabl=
e this worker (--no-advpng argument or `:advpng =3D> false` through optio=
ns)
optipng worker: `optipng` not found; please provide proper binary or disa=
ble this worker (--no-optipng argument or `:optipng =3D> false` through o=
ptions)
pngquant worker: `pngquant` not found; please provide proper binary or di=
sable this worker (--no-pngquant argument or `:pngquant =3D> false` throu=
gh options)
jhead worker: `jhead` not found, `jpegtran` not found; please provide pro=
per binary or disable this worker (--no-jhead argument or `:jhead =3D> fa=
lse` through options)
jpegoptim worker: `jpegoptim` not found; please provide proper binary or =
disable this worker (--no-jpegoptim argument or `:jpegoptim =3D> false` t=
hrough options)
jpegtran worker: `jpegtran` not found; please provide proper binary or di=
sable this worker (--no-jpegtran argument or `:jpegtran =3D> false` throu=
gh options)
gifsicle worker: `gifsicle` not found; please provide proper binary or di=
sable this worker (--no-gifsicle argument or `:gifsicle =3D> false` throu=
gh options)
  • 服务器 Ubuntu 14.04.5 LTS
  • Rails 5.1.3
  • ruby 2.4.1
  • nginx 1.9.10
  • 乘客 5.0.24
  • image_optim (0.25.0)
  • image_optim_pack (0.5.0.20170803 x86_64-linux)

最佳答案

tl;dr,image_optim_pack 中的二进制文件可能是针对比您尝试运行它的系统更新的系统构建的。尝试查找适用于您的系统的最新版本的 image_optim_pack。对我来说,以下版本有效:

gem "image_optim", "~> 0.25"
gem "image_optim_pack", "= 0.2.3"
<小时/>

更多详细信息

要获取有关哪个部分发生故障的信息,请运行:

$ bundle exec image_optim --info

我看到这样的东西:

$ bundle exec image_optim --info
image_optim v0.26.1
config:
  verbose: true
nice: 10
threads: 4
pack: true
skip_missing_workers: true
allow_lossy: false
cache_dir:
cache_worker_digests: false
image_optim_pack: jpeg-recompress, jpegoptim, jhead, advpng, jpegtran, gifsicle, pngcrush, optipng from /path/to/gems/ruby-2.4.0/gems/image_optim_pack-0.5.0.20180419-x86_64-linux/vendor/linux-x86_64 failed
No pack for this OS and/or ARCH, check verbose output
Resolved jpegrescan 1a762f62 at /path/to/gems/ruby-2.4.0/gems/image_optim-0.26.1/vendor/jpegrescan
pngcrush worker: `pngcrush` not found; please provide proper binary or disable this worker (--no-pngcrush argument or `:pngcrush => false` through options)
pngout worker: `pngout` not found; please provide proper binary or disable this worker (--no-pngout argument or `:pngout => false` through options)
advpng worker: `advpng` not found; please provide proper binary or disable this worker (--no-advpng argument or `:advpng => false` through options)
optipng worker: `optipng` not found; please provide proper binary or disable this worker (--no-optipng argument or `:optipng => false` through options)
pngquant worker: `pngquant` not found; please provide proper binary or disable this worker (--no-pngquant argument or `:pngquant => false` through options)
jhead worker: `jhead` not found, `jpegtran` not found; please provide proper binary or disable this worker (--no-jhead argument or `:jhead => false` through options)
jpegoptim worker: `jpegoptim` not found; please provide proper binary or disable this worker (--no-jpegoptim argument or `:jpegoptim => false` through options)
jpegtran worker: `jpegtran` not found; please provide proper binary or disable this worker (--no-jpegtran argument or `:jpegtran => false` through options)
gifsicle worker: `gifsicle` not found; please provide proper binary or disable this worker (--no-gifsicle argument or `:gifsicle => false` through options)
svgo worker: `svgo` not found; please provide proper binary or disable this worker (--no-svgo argument or `:svgo => false` through options)
Workers by format:

它没有说明 worker 失败的原因。但您可以运行工作程序二进制文件来找出答案:

# Path from the error message:
$ export IMAGE_OPTIM_BIN="/path/to/gems/ruby-2.4.0/gems/image_optim_pack-0.5.0.20180419-x86_64-linux/vendor/linux-x86_64"
$ ls $IMAGE_OPTIM_BIN
advpng  gifsicle  jhead  jpegoptim  jpeg-recompress  jpegtran  libjpeg.so  libpng.so  libz.so  optipng  pngcrush  pngquant
$ $IMAGE_OPTIM_BIN/advpng
/path/to/gems/ruby-2.4.0/gems/image_optim_pack-0.5.0.20180419-x86_64-linux/vendor/linux-x86_64/advpng: /lib/libc.so.6: version `GLIBC_2.14' not found (required by /path/to/gems/ruby-2.4.0/gems/image_optim_pack-0.5.0.20180419-x86_64-linux/vendor/linux-x86_64/advpng)
/path/to/gems/ruby-2.4.0/gems/image_optim_pack-0.5.0.20180419-x86_64-linux/vendor/linux-x86_64/advpng: /lib/libc.so.6: version `GLIBC_2.14' not found (required by /path/to/gems/ruby-2.4.0/gems/image_optim_pack-0.5.0.20180419-x86_64-linux/vendor/linux-x86_64/libz.so)

我认为重要的部分是:

version `GLIBC_2.14' not found

我检查了我系统上安装的glibc版本,它只是2.12。如果您能够通过系统的包管理器升级 glibc,请先尝试一下。如果您无法升级 glibc,则只需使用如上所述的旧版本的 gems。

关于ruby-on-rails - 生产中 image_optim_pack 丢失二进制文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45611537/

相关文章:

ruby-on-rails - 将大型数据集导入 MongoDB 的最佳实践是什么?

optimization - 使用 ImageOptim 进行*无损* PNG 优化会产生不同颜色的图像

javascript - 减少图像加载时间和带宽使用的最有效方法

image - 为什么我的 favicon.ico 文件比其各部分的总和大得多?

ios - 如何对我的 iOS 应用程序图像进行 PngCrush?

ruby-on-rails - Eager Load 间接关联 Rails

ruby-on-rails - 如何使用 linkedin gem 和 omniauth 获取更详细的 LinkedIn 用户信息?

ruby-on-rails - Actioncable Nginx 和 Puma WebSocket 握手 : Unexpected response

mysql - "db:migrate rake"抛出错误 "cannot load such file -- bundler/setup"