NodeJS“npm update -g npm”失败,并显示“Error:拒绝删除”(通过软件包安装,而不是自制软件)

cl25kdpy  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(242)

在试图修复JPG compatibility issue时,我在Mac OSX(约塞米蒂)上更新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安装的建议(加上一些关于如何删除Homebrew包的不必要的居高临下的说明)。但我不会通过自制软件安装软件包;我在那里找到的建议似乎与我的案子无关。
我应该如何解决这个问题?有谁知道/有这个问题/能想到一个快速解决方案吗?
先谢谢你了!

vc6uscn9

vc6uscn91#

这不是一个完整的答案,但只是为了跟进,我找到了一种方法来解决这个问题。
我的最终需求是让node在安装了resemble包的情况下运行。Resemble依赖于cairo,这是通过自制软件安装的;这似乎是我的第一个错误。由于Cairo显然安装不当,有几个软件包丢失了;这迫使我使用一个触发其他错误并需要其他解决方法的解决方法。等等
当我删除Cairo自制软件包并从源代码(使用this guide)构建Cairo时,我刚刚消除了其他几个错误。
所以我学到的教训是:不要用Homebrew做任何finnicky的事情,或者任何finnicky的任何依赖项。

yfwxisqw

yfwxisqw2#

我这样解决:

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

相关问题