如何卸载从 pkg (Mac OS X) 安装的 nodejs?

Posted

技术标签:

【中文标题】如何卸载从 pkg (Mac OS X) 安装的 nodejs?【英文标题】:How do I uninstall nodejs installed from pkg (Mac OS X)? 【发布时间】:2012-02-21 02:53:47 【问题描述】:

我从我的 Mac 上的 pkg 文件安装了 NodeJS。现在我需要卸载它。请告诉我该怎么做。 我试图从这个列表中删除文件:

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom

但是节点还在我的电脑上。

【问题讨论】:

我能注意到sudo npm uninstall npm -g 比下面给出的答案更安全、更容易吗? 但这不会卸载 node.js 【参考方案1】:

我跑了:

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \
| while read i; do
  sudo rm /usr/local/$i
done
sudo rm -rf /usr/local/lib/node \
     /usr/local/lib/node_modules \
     /var/db/receipts/org.nodejs.*

编码为gist 2697848

更新 似乎收据.bom 文件名可能已更改,因此您可能需要将上面的org.nodejs.pkg.bom 替换为org.nodejs.node.pkg.bom。要点已相应更新。

【讨论】:

非常有帮助。我唯一要补充的是节点 0.4 ish 安装在 /usr 中,而不是 /usr/local。所以“sudo rm /usr/local/$i”需要改变。对我来说,我做了“sudo rm /$i”,因为路径所在的 bom 文件喜欢:“./usr/bin/node” 我为它创建了一个gist。使用它需要您自担风险。 @nicerobot 感谢您的要点/脚本!可能应该向其他人指出实际的gist page for that script is here。此外,作为自己运行 .sh 脚本的不二之选,我必须先 $ chmod u+x uninstall-node.sh 然后 $ ./uninstall-node.sh 才能对我有用。 :) 是的,它的工作,很酷的答案。不管我有什么剩余的东西,刚刚用rm -rf /Users/me/local/bin/node 完成了,现在摇摆节点不稳定! @Gomino 在运行这样的事情时,我会更笼统地说,你真的应该检查你的系统和脚本,以了解它是否会做你想做的事情。该脚本是针对旧版本的 macOS 和 Node.js 编写的,因此可能需要更新。【参考方案2】:

如果你是从他们的website 安装 Node,试试这个:

sudo rm -rf /usr/local/bin/node,npm,lib/node_modules/npm,lib/node,share/man/*/node.*

这对我有用,但如果您有任何问题,我的 GitHub 是“mnafricano”。

【讨论】:

我的安装在 /opt/local/bin 那可能是因为你使用的是 MacPorts 在@nicerobot 的脚本(评分较高的答案)失败后,这对我有用。 0.10.32 卸载并重新安装。 也缺少/usr/local/lib/dtrace/node.d 缺少/var/db/receipts/org.nodejs.*【参考方案3】:

使用 npm 卸载。只需运行 sudo npm uninstall npm -g 即可删除所有文件。 要摆脱 bash 路径名之类的无关内容,请运行以下命令(来自 nicerobot 的回答):

sudo rm -rf /usr/local/lib/node \ /usr/local/lib/node_modules \ /var/db/receipts/org.nodejs.*

【讨论】:

【参考方案4】:

为了删除'native' node.js 安装,我使用了之前答案sudo npm uninstall npm -g 中建议的方法,并附加了sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*

但是,我还必须删除以下两个目录:

sudo rm -rf /usr/local/include/node /Users/$USER/.npm

只有在那之后我才能用 Homebrew 安装 node.js。

【讨论】:

对我来说还不够——还得sudo rm /usr/local/bin/node /usr/local/share/man/man1/node.1 /usr/local/lib/dtrace/node.d 【参考方案5】:

这是我使用的命令的完整列表(非常感谢上面的海报):

sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
brew install node

【讨论】:

【参考方案6】:

根据之前的帖子,这是我使用的完整列表

sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
brew install node

【讨论】:

谢谢。我的 mysql 停止工作,所以我只需要删除它,这 + 重新启动就可以了。 我还必须删除另外两个文件:/usr/local/share/doc/node/gdbinit/usr/local/share/systemtap/tapset/node.stp 得到 2 个错误 rm: /usr/local/bin/node: No such file or directory, rm: /usr/local/share/man/man1/node.1: No such file or目录【参考方案7】:

在以前的答案上扩展了一个小脚本。

#!/bin/bash

# Uninstall node.js
# 
# Options:
#
# -d Actually delete files, otherwise the script just _prints_ a command to delete.
# -p Installation prefix. Default /usr/local
# -f BOM file. Default /var/db/receipts/org.nodejs.pkg.bom

CMD="echo sudo rm -fr"
BOM_FILE="/var/db/receipts/org.nodejs.pkg.bom"
PREFIX="/usr/local"

while getopts "dp:f:" arg; do
    case $arg in
        d)
            CMD="sudo rm -fr"
            ;;
        p)
            PREFIX=$arg
            ;;
        f)
            BOM_FILE=$arg
            ;;
    esac
done

lsbom -f -l -s -pf $BOM_FILE \
    | while read i; do
          $CMD $PREFIX/$i
      done

$CMD $PREFIX/lib/node \
     $PREFIX/lib/node_modules \
     $BOM_FILE

将其保存到文件并运行:

# bash filename.sh

【讨论】:

【参考方案8】:

我拿走了 AhrB 的清单,同时又附加了三个文件。这是我使用的完整列表:

sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/bin/npm
sudo rm /usr/local/share/systemtap/tapset/node.stp
sudo rm /usr/local/lib/dtrace/node.d
# In case you want to reinstall node with HomeBrew:
# brew install node

【讨论】:

对我来说很棒!跳过最后一行,让系统上的节点处于卸载状态。 感谢@Rich 的评论,我已经把最后一行注释掉了。【参考方案9】:

我也必须删除以下文件,因为 brew 在手动删除所有文件后在稍后安装时抱怨。

/usr/local/share/doc/node/gdbinit

/usr/local/share/systemtap/tapset/node.stp

然后执行以下操作

brew install node 

brew link node

【讨论】:

使用标记将您的代码或路径格式化为单型。 问题是关于卸载而不是安装..你可能拼错了它应该是.....brew卸载节点【参考方案10】:

经过反复试验,以下工作正常,这些目录不可写,所以我删除了它们,终于能够替换 node 和 npm。

sudo rm -rf /usr/local/share/systemtap
sudo rm -rf /usr/local/share/doc/node
sudo rm -rf /usr/local/Cellar/node/9.11.1
brew install node
==> Downloading https://homebrew.bintray.com/bottles/node-9.11.1.high_sierra.bottle.tar.gz
Already downloaded: /Users/xxx/Library/Caches/Homebrew/node-9.11.1.high_sierra.bottle.tar.gz
==> Pouring node-9.11.1.high_sierra.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
?  /usr/local/Cellar/node/9.11.1: 5,125 files, 49.7MB

node -v
v9.11.1
npm -v
5.6.0

【讨论】:

我修改了你的格式。您可以选择一个文本块并单击大括号图标以获取等宽文本。或者如果你是受虐狂,每行缩进四个空格。【参考方案11】:

您可以使用我的分叉要点: https://gist.github.com/ryangatchalian912/75c6894c3f3143fef366d25eb63437ab

将这些命令复制并粘贴到您的终端

curl -ksO https://gist.githubusercontent.com/ryangatchalian912/75c6894c3f3143fef366d25eb63437ab/raw/59c25be64e5555415726bfa824ae41ae1b4539b9/uninstall-node.sh
chmod +x ./uninstall-node.sh
sudo ./uninstall-node.sh > tester.txt
rm uninstall-node.sh

它适用于 Mac OSX Big Sur (11.4+)。

【讨论】:

谢谢,它适用于 OS X 10.11 (El Capitan)

以上是关于如何卸载从 pkg (Mac OS X) 安装的 nodejs?的主要内容,如果未能解决你的问题,请参考以下文章

013_Mac OS X下应该如何卸载软件和安装应用软件

在 Mac OS X 中卸载软件包

如何从 Mac OS X 中卸载 MySQL?

如何解压 Mac OS X 下的 PKG 文件(网摘)

如何从 Mac OS X 10.7.3 卸载 XCode 4.3.1?

在 Mac OS X 上卸载 Django