如何在NPM安装中使用预安装的二进制文件(Zeromq),而不是通过Node-GYP工具构建



我在Alpine上:3.6我已经从系统上(从源)安装了Zeromq二进制。

现在我想对此使用nodejs的绑定。因此,使用https://github.com/justintulloss/zeromq.node

这是这里的一些指令,我们可以从源构建库。https://github.com/justintulloss/zeromq.node/wiki/installation#installation-onstallation-on-linux--bsd-without-root-access

我们可以自行补充lib,但这将二进制文件放在同一文件夹中,但是我希望NPM使用安装在系统(/use/local)中的库据我所知,这两条线的游戏我不太了解

export CXXFLAGS="-I $(readlink -f ../include)"
export LDFLAGS="-L $(readlink -f ../lib) -Wl,-rpath=$(readlink -f ../lib)"

然后npm install将使用libs,我们刚刚在zeromq文件夹中遵守的内容

我对CXXFLAG和LDFLAGS没有太多了解,因此可能。

您引用的安装指令适用于没有 root访问的人,因此无法在诸如/usr/usr/local之类的"常见位置"中安装软件。如果您将库安装到像主目录这样的"不寻常的地方"中,则必须告诉编译器和链接器可以找到库的位置。在这种情况下,这就是CXXFLAGSLDFLAGS的使用。由于您似乎可以访问root并将Zeromq库安装在"通常的位置"中,因此npm install zmq应该在没有设置这些Varaibales的情况下工作。

更新:上面似乎不起作用。但是,根据https://github.com/justintulloss/zeromq.node#project-status,该模块无论如何都被弃用。新的zeromq型号无需汇编。请参阅此最小Dockerfile:

FROM node:alpine
RUN npm install zeromq

注意:这不使用预安装的库,而是使用预装的库。但是,您可以从基本图像中删除预装的库来节省大小。

现在有可能使用6-beta.4,刚刚测试

npm安装zeromq@6.0.0-beta.4 - zmq-shared

在安装了带有Zeromq软件包的系统中,即在Alpine

apk添加Zeromq-dev

我几乎确定不需要-dev包,但是我没有测试

更新(几分钟后)

可以将ZMQ用作外部库,无论如何都需要编译,但无需下载所有软件包。给出安装Zeromq-Dev

apk添加Zeromq-dev

(在这种情况下需要-dev),然后

npm i Zeromq稳定-ZMQ-External

将编译Nodejs模块,而不是Zeromq库本身,一个非常快的选项,但仍然没有获得您需要的轻量级Docker映像

最新更新