0

我有 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
4

1 回答 1

1

基本问题是全局安装包,npm并将它们链接到目录下/usr/local/,这些目录通常由 root 用户拥有。

节点版本管理器 (nvm)是规避此类棘手权限问题的一种方法。它允许将全局安装的软件包链接到您的主文件夹中的目录中~/.nvm/versions/node/<version>

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

我过去常常find /usr/local/ -name 'node_modules'搜寻/usr/local/我以前用npm. 全部删除。

然后我使用来自https://github.com/creationix/nvmnvm的最新安装脚本进行安装

就我而言,它是

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

然后我必须链接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/并且一切正常!

于 2018-12-13T23:08:57.550 回答