ganache-cli 的 npm 全局安装失败(因为 sudo/permissions)

npm global install of ganache-cli fails (because of sudo/permissions)

我有 npm 版本 6.5.0 和节点 v10.10.0。 npm 全局安装以前没有问题。

sudo npm install --global ganache-cli

npm ERR! code 128
npm ERR! Command failed: /usr/bin/git clone --depth=1 -q -b master https://github.com/ethereumjs/ethereumjs-abi.git /root/.npm/_cacache/tmp/git-clone-305900d8
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-305900d8': Permission denied
npm ERR!     
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-12-12T20_49_21_325Z-debug.log

基本问题是将带有 npm link 的软件包全局安装到 /usr/local/ 下的目录中,这些目录通常由 root 用户拥有。

Node Version Manager (nvm) 是规避此类棘手权限问题的一种方法。它允许全局安装的包 linked 到您的主文件夹中 ~/.nvm/versions/node/<version>

下的目录中

使用我的包管理器,我删除了 node 和相关软件,例如 npm

我使用 find /usr/local/ -name 'node_modules' 搜索 /usr/local/ 以查找我之前使用 npm 全局安装的软件包的任何痕迹。全部删除。

然后我使用来自 https://github.com/creationix/nvm

的最新安装脚本安装了 nvm

在我的例子中是

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

然后我不得不 link nvm 进入我的环境路径。 就我而言,这意味着手动编辑我的 .bashrc 个人资料以包含以下内容:

export NVM_DIR="/home/zack/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

从那里,我准备通过 nvm

获取最新的 LTS 版本的节点
nvm install --lts

现在可以在没有 sudo 的情况下安装全局安装的软件包,因为它们存放在 ~/.nvm/versions/node/v10.14.2/ 下并且一切正常!