【发布时间】:2013-02-14 11:08:14
【问题描述】:
我正在构建一个 npm 包 (libsbmlsim),用于安装我稍后将在服务器端使用的二进制文件。
当我运行npm install 时,包构建得很好,但是,当我通过npm install libsbmlsim 将它用作不同项目中的依赖项时,它无法找到它所依赖的二进制文件之一 (cmake) :
/bin/sh: ../../node_modules/cmake/bin/cmake: No such file or directory
make: *** [all] Error 127
npm ERR! libsbmlsim@0.0.2 install: `make`
npm ERR! `sh "-c" "make"` failed with 2
npm ERR!
npm ERR! Failed at the libsbmlsim@0.0.2 install script.
我怀疑这与我的设置有关,所以我将在这里稍微解释一下。 libsbmlsim 依赖于其他一些二进制文件(cmake 和 libsbml),我还捆绑了作为依赖项或 npm install cmake 等引入的 npm 包。我在 package.json 中设置了安装脚本每个包的文件运行make,我有一个相应的Makefile 下载二进制文件。
同样,当我将libsbmlsim 作为自己的项目时运行npm install,但当它作为依赖项安装时无法安装,即npm install libsbmlsim。
这是我的 Makefile:
all:
wget http://fun.bio.keio.ac.jp/software/libsbmlsim/downloads/libsbmlsim-1.1.0.tar.gz
tar -xvzf libsbmlsim-1.1.0.tar.gz
mkdir -p libsbmlsim-1.1.0/build
cd libsbmlsim-1.1.0/build; export PATH=../../node_modules/cmake/bin:$(PATH); cmake .. -DCMAKE_INSTALL_PREFIX=../../libsbmlsim -DLIBSBML_INCLUDE_DIR=../../node_modules/libsbml/include -DLIBSBML_LIBRARY=../../node_modules/libsbml/lib64/libsbml.so
cd libsbmlsim-1.1.0/build; export PATH=../../node_modules/cmake/bin:$(PATH); make -j4
cd libsbmlsim-1.1.0/build; make install;
rm -rf libsbmlsim-1.1.0
rm *.tar.gz
【问题讨论】:
-
“无法正确安装”是什么意思?什么错误信息。
-
我添加了错误消息和更多细节,我依赖于不同包中的二进制文件,我调用
node_modules/cmake/bin/cmake,当我正常运行npm install时它工作正常,但是当它正在运行时从 npm 注册表作为包安装,我将安装脚本设置为make,即使我已将其添加为依赖项,它也无法找到二进制文件。 -
基于错误,找不到cmake二进制文件。既然我不能在这里运行,那么在构建你认为它所在的位置时,cmake 是否可用?
-
这就是我被难住的地方,所以当我在 libsbmlsim repo 中构建我的包时,我可以在其自身上运行 npm install,它将 cmake 二进制文件作为依赖项下载,然后调用
node_modules中的二进制文件来构建自己。但问题是,当我想使用 libsbmlsim 作为依赖项时,npm install 无法找到 cmake 二进制文件,即使它已列在依赖项中。 -
不确定是否有帮助,但我有这个项目:c9.io/stanley-gu/libsbmlsim2