【问题标题】:NodeJS "npm update -g npm" fails with "Error: Refusing to delete" (Installed via package, NOT homebrew)NodeJS“npm update -g npm”失败并显示“错误:拒绝删除”(通过包安装,而不是自制软件)
【发布时间】:2015-08-25 13:17:11
【问题描述】:

在尝试修复 JPG compatibility issue 时,尝试在我的 Mac OSX (Yosemite) 上更新 npm 时遇到以下错误。请注意,我没有通过自制软件安装,而是通过official package 安装。 (我使用的是 0.10.37 版本来抵消yet another NPM package issue)。

这是我采取的步骤:

  • brew uninstall nodebrew uninstall npm 通过 Homebrew 确保我的系统上不存在节点。输出如预期,Error: No such keg: /usr/local/Cellar/node

  • http://nodejs.org/dist/v0.10.37/下载包并安装。

  • node -v 验证是否已安装 Node。

  • npm update -g npm

这是最后一条命令的输出:

$ npm update -g npm
npm ERR! Refusing to delete: /usr/local/share/man/man3/npm-bin.3 not in /usr/local/lib/node_modules/npm
File exists: /usr/local/share/man/man3/npm-bin.3
Move it away, and try again. 

npm ERR! System Darwin 14.1.0
npm ERR! command "node" "/usr/local/bin/npm" "update" "-g" "npm"
npm ERR! cwd /Users/topher
npm ERR! node -v v0.10.37
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/share/man/man3/npm-bin.3
npm ERR! code EEXIST
npm ERR! error rolling back Error: Refusing to delete: /usr/local/share/man/man3/npm-bin.3 not in /usr/local/lib/node_modules/npm
npm ERR! error rolling back     at clobberFail (/usr/local/lib/node_modules/npm/lib/utils/gently-rm.js:57:12)
npm ERR! error rolling back     at next (/usr/local/lib/node_modules/npm/lib/utils/gently-rm.js:43:14)
npm ERR! error rolling back     at /usr/local/lib/node_modules/npm/lib/utils/gently-rm.js:52:12
npm ERR! error rolling back     at Object.oncomplete (evalmachine.<anonymous>:108:15)
npm ERR! error rolling back  { [Error: Refusing to delete: /usr/local/share/man/man3/npm-bin.3 not in /usr/local/lib/node_modules/npm] code: 'EEXIST', path: '/usr/local/share/man/man3/npm-bin.3' }
npm ERR! not ok code 0

当我删除上述文件并重试时,我收到另一个错误,因为npm 命令不再存在。看起来更新部分成功了,npm 命令已被删除:

$ npm
-bash: /usr/local/bin/npm: No such file or directory

当我搜索这个“拒绝删除”错误时,我看到了大量关于如何修复拙劣的 Homebrew 安装的建议(加上一些 unnecessarily condescending instructions on how to remove the Homebrew package。但我不是通过自制软件安装软件包;我的建议是我发现那里似乎与我的情况无关。

我应该如何解决这个问题?其他人知道/有这个问题/可以想到一个快速解决方案吗?

提前致谢!

【问题讨论】:

    标签: node.js macos npm


    【解决方案1】:

    这不是一个完整的答案,但只是为了跟进,我找到了解决此问题的方法。

    我的最终需要是让node 在安装包resemble 的情况下运行。 Resemble 依赖于 cairo,它是通过 homebrew 安装的;看来这是我的第一个错误。因为 Cairo 显然安装不正确,所以缺少几个软件包;这迫使我使用一种引发其他错误并需要其他解决方法的解决方法......等等。

    当我删除 Cairo 自制软件包并从源代码构建 Cairo(使用 this guide)时,我刚刚解决了其他几个错误。

    所以我学到的教训是:不要将 Homebrew 用于任何 finnicky 或任何 finnicky 的依赖项

    【讨论】:

      【解决方案2】:

      我是这样解决的:

      rm /usr/bin/npm
      /usr/lib64/node_modules/npm/bin/npm-cli.js install npm -g
      npm -v # success !
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-06
        • 1970-01-01
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多