如何在多台计算机上安装相同版本的 NPM 和 Node



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

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

我试过这个:

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
sudo cp node-$NVERS-linux-x64/bin/node /usr/local/bin/node
sudo cp node-$NVERS-linux-x64/bin/npm  /usr/local/bin/npm

节点工作正常:

node -v
v8.9.2

但是 npm 失败了:

$ 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 可执行文件实际上是指向压缩包内相对目录的软链接。

正确的方法是什么?

看起来你只复制了二进制文件,这就是你的npm失败的原因,它实际上试图在外接的压缩包中查找其他文件。我认为更安全的方法是使用符号(软(链接(修改了代码的最后 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

在我看来,没有一种事实上的标准方法来处理 npm 安装,即使您使用 nnvm 的包装器工具。我最确信的方法是像你一样自己做。

相关内容

  • 没有找到相关文章

最新更新