Skip to content

M1 Mac install custom libvips, to use a globally-installed version of libvips. #16

Description

@jappp

前言

最近在做一个图片云处理项目,使用到的主要技术框架是sharp.js。遇到这样一个问题:sharp底层依赖的包是libvips图像处理库,但是官方预构建的二进制文件sharp-libvips是不支持输出gif,webp等动态格式的,查阅官方文档之后发现需要全局下载安装libvips库。原文是:Requires libvips compiled with support for ImageMagick or GraphicsMagick。To use a custom, globally-installed version of libvips instead of the provided binaries。具体安装详见libvips install
MacOS系统下,直接homebrew安装

brew install vips

安装完成之后,如图所示校验是否安装成功
image

然后再去项目里面运行npm install
image
从图上可以看出,npm直接从cache里面下载了预构建的libvips,并不是全局安装的libvips。一开始我以为是npm缓存问题,所以把缓存文件删除之后,再试一遍。
image
下载地址变了,但还是下载的预构建libvips文件,不能支持gif功能。这就奇怪了,我的步骤应该没有出问题,想到我是用的M1版本的mac,会不会和系统有关系呢?所以去sharp官方issue根据关键词查了一下,还真被我找到了。
Mismatched x64 and ARM64 architectures on M1 Mac #2588

根据lovell的说法:vips is arm64 but you're using x64 Node.js - the architectures must match.

全局下载的libvips库是arm64架构的,但是使用的node是x64架构,就会导致不兼容使用不了全局库。
image
查了下自己的node版本,还真是x64架构的。果断使用nvm下载arm64架构的node版本
然后再切换到正确的node版本运行npm install

image

很清晰的可以看见,这次使用了全局的libvips库,同样功能运行也很正常。

这个问题虽然比较小,但确实花费了很多时间去排查吧,所以整理一下相关步骤写篇blog,希望能给遇到相同问题的人一些帮助。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions