【问题标题】:npm install fails when package is a dependency当包是依赖项时,npm install 失败
【发布时间】: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 依赖于其他一些二进制文件(cmakelibsbml),我还捆绑了作为依赖项或 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

来源可在此处获得:https://github.com/stanley-gu/libsbmlsim

【问题讨论】:

  • “无法正确安装”是什么意思?什么错误信息。
  • 我添加了错误消息和更多细节,我依赖于不同包中的二进制文件,我调用 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

标签: git node.js makefile npm


【解决方案1】:

除非您已将模块发布到 npm 注册表 (npm publish),否则您需要在开发过程中查看 npm link

更多细节http://howtonode.org/introduction-to-npm(有些稀疏)

【讨论】:

  • 感谢您的回复,我确实将它发布到了 npm 注册表,这就是我尝试在第二个应用程序中将其作为依赖项使用的方式。
  • 你不能真正在你的 npm 中使用 redhat 包。例如,在 mac 上不起作用。为什么你不能依靠简单的制作?因为您使用的库需要 cmake?
  • 我知道在包中包含二进制文件不是一个好主意,但我有一些不同的应用程序需要 cmake 来构建,我希望有一个解决方案,以便我可以轻松获取 cmake 二进制文件并使用 npm 构建。
猜你喜欢
  • 2020-02-25
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
相关资源
最近更新 更多