如何在许多机器上安装相同版本的NPM和Node

时间:2018-01-30 05:38:33

标签: node.js ubuntu npm ubuntu-17.10

我有很多机器(实际上是VM)运行17.10并且我想在每个机器上安装一个已知的Node和npm可执行文件。我有一个脚本,如果我在接下来的6个月甚至一年内运行它,我想在所有机器上获得完全相同的Node和NPM版本。

我尝试使用apt软件包,但随着这些软件包的更新,我在以后的安装中获得了与早期安装不同的版本。我希望他们都一模一样。

我试过了:

node -v
v8.9.2

节点工作正常:

$ npm -v
module.js:538
    throw err;
    ^

Error: Cannot find module '../lib/utils/unsupported.js'
    at Function.Module._resolveFilename (module.js:536:15)
    at Function.Module._load (module.js:466:25)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at /usr/local/bin/npm:19:21
    at Object.<anonymous> (/usr/local/bin/npm:92:3)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)

但是npm失败了:

adb

npm可执行文件实际上是指向tarball内部相对目录的软链接。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

看起来你只复制二进制文件,这就是你的npm失败的原因,它实际上试图寻找引用的tarball中的其他文件。我认为更安全的方法是使用符号(软)链接(修改代码的最后4行):

NVERS=v8.9.2
sudo rm -rf node-$NVERS-linux-x64
sudo rm -f node-$NVERS-linux-x64.tar.xz
wget https://nodejs.org/dist/$NVERS/node-$NVERS-linux-x64.tar.xz
tar xvf node-$NVERS-linux-x64.tar.xz /usr/local/lib  # Extracting under Root
sudo ln -s /usr/local/lib/node-$NVERS-linux-x64/bin/node /usr/local/bin/node # Symlink
sudo ln -s /usr/local/lib/node-$NVERS-linux-x64/bin/npm  /usr/local/bin/npm # Symlink

在我看来,即使您使用nnvm中的包装工具,也没有一种事实上的标准方法可以使用npm安装。我最有说服力的方法就是像你一样自己做。