2013-02-13 141 views
1

我正在构建一个npm包(libsbmlsim),用于安装稍后将在服务器端使用的二进制文件。当包是依赖关系时,npm安装失败

当我运行npm install,然而,包建立得很好,当我通过npm install libsbmlsim在不同的项目中使用它作为一个依赖,它未能找到它所依赖的二进制文件之一(cmake):

/bin/sh: ../../node_modules/cmake/bin/cmake: No such file or directory                                  
make: *** [all] Error 127                                             
npm ERR! [email protected] install: `make`                                         
npm ERR! `sh "-c" "make"` failed with 2                                          
npm ERR!                                                  
npm ERR! Failed at the [email protected] install script.    

我怀疑它与我的设置有关,所以我会在这里解释一下。 libsbmlsim取决于其他一些二进制文件(cmakelibsbml),那我也有作为捆绑为我带来的相关性或npm install cmake等我设置的安装脚本中的每个包的的package.json文件来运行make NPM包,我有相应的Makefile下载二进制文件。

再一次,当我运行npm install时,它有效,当我有libsbmlsim作为它自己的项目时,但它作为依赖项安装时无法安装,即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 

源可以在这里找到:https://github.com/stanley-gu/libsbmlsim

+0

你是什么意思“没有正确安装”?什么错误消息。 – 2013-02-14 02:46:48

+0

我添加了错误消息和一些更多的细节,我依赖于一个不同的包中的二进制文件,我调用'node_modules/cmake/bin/cmake',当我正常运行'npm install'时工作正常,但是当它作为软件包从npm注册表中安装,我将安装脚本设置为'make',但它无法找到二进制文件,即使我已将它添加为依赖项。基于错误的 – user1027169 2013-02-14 03:09:58

+0

,它找不到cmake二进制文件。由于我无法在这里运行,因此在构建您认为它的位置时可以使用cmake吗? – 2013-02-14 03:29:29

回答

1

除非你发布你的模块,以故宫注册表(npm publish),你需要时看npm link发展。

详情http://howtonode.org/introduction-to-npm(有点稀疏)

+0

感谢你的回应,我确实将它发布到了npm注册表中,这是我试图将它作为第二个应用程序中的依赖项来使用它的方式。 – user1027169 2013-02-14 03:11:41

+0

你不能真正在你的npm中使用redhat包。例如,在Mac上不起作用。你为什么不能依靠简单的制作?因为你使用的库需要cmake? – 2013-02-14 03:27:33

+0

我知道在包中包含一个二进制文件并不是一个好主意,但我有几个需要cmake构建的不同应用程序,并且我希望能有一个解决方案,以便我可以轻松地获取cmake二进制文件并与NPM。 – user1027169 2013-02-14 03:41:25