Как удалить nodejs, установленный из pkg (Mac OS X)?

124

Я установил NodeJS из файла pkg на свой Mac. Теперь мне нужно его удалить. Подскажите пожалуйста как это сделать. Я пытался удалить файлы из этого списка:

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

Но узел все еще на моем компьютере.

Варвара Степанова
источник
1
Могу я отметить, что sudo npm uninstall npm -gэто намного безопаснее и проще, чем ответы, приведенные ниже?
tomsmeding
17
Но это не удаляет node.js
Джейк

Ответы:

172

Я побежал:

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.*

Закодировано в сущности 2697848

Обновление Кажется, .bomимя файла квитанций могло быть изменено, поэтому вам может потребоваться заменить его org.nodejs.pkg.bomна org.nodejs.node.pkg.bomв приведенном выше. Суть была обновлена ​​соответствующим образом.

nicerobot
источник
2
Очень полезно. Единственное, что я хотел бы добавить, это то, что узел 0.4 ish установлен в / usr, а не в / usr / local. Итак, "sudo rm / usr / local / $ {i}" необходимо изменить. Для меня я сделал "sudo rm / $ {i}", так как файлы bom, где pathed понравились: "./usr/bin/node"
Дастин Симпсон
13
Я придумал для этого суть . Используйте его на свой страх и риск.
nicerobot
5
@nicerobot Спасибо за суть / сценарий! Вероятно, стоит указать другим, что настоящая страница с сутью этого сценария находится здесь . Кроме того , будучи n00b запуском .Sh скрипты себя, я должен был , $ chmod u+x uninstall-node.shа затем , $ ./uninstall-node.shпрежде чем он работал на меня. :)
mhulse
1
да, это сработало, классный ответ. что бы у меня ни осталось, и я просто закончил это сразу с rm -rf /Users/me/local/bin/nodeнестабильным сейчас качающимся узлом!
Bent Cardan
1
@Gomino, когда вы запускаете такие вещи, я бы сказал в более общем плане, вы ДЕЙСТВИТЕЛЬНО должны проверить свою систему и скрипт, чтобы понять, будет ли он делать то, что вы хотите. Скрипт был написан для старых версий macOS и Node.js, поэтому может потребоваться обновление.
nicerobot
116

Если вы установили Node с их веб-сайта , попробуйте следующее:

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

У меня это сработало, но если у вас есть вопросы, мой GitHub - mnafricano.

Afreekano
источник
Я установил свой в / opt / local / bin
sasklacz
1
Вероятно, это потому, что вы использовали MacPorts
notthetup
Это сработало для меня после того, как сценарий @ nicerobot (ответ с более высоким рейтингом) какофонично не удался. Деинсталлировал и переустановил 0.10.32.
Джефф Дики,
3
а также пропал без вести/usr/local/lib/dtrace/node.d
Паскаль Беллонкле
2
пропал без вести/var/db/receipts/org.nodejs.*
Уоллес Сидри
68

Следуя предыдущим сообщениям, вот полный список, который я использовал

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
Trefex
источник
1
СПАСИБО. Мой MySQL перестал работать, поэтому мне просто нужно было его удалить, это + перезагрузка помогли.
mizuki
Мне также пришлось удалить два дополнительных файла: /usr/local/share/doc/node/gdbinitи/usr/local/share/systemtap/tapset/node.stp
xji
получил 2 ошибки: rm: / usr / local / bin / node: нет такого файла или каталога, rm: /usr/local/share/man/man1/node.1: нет такого файла или каталога
vikramvi
11

Чтобы удалить «родную» установку 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

Только после этого я смог установить node.js с помощью Homebrew.

t0r0X
источник
3
было недостаточно для меня - также пришлосьsudo rm /usr/local/bin/node /usr/local/share/man/man1/node.1 /usr/local/lib/dtrace/node.d
Hertzel Guinness
8

Это полный список команд, которые я использовал (большое спасибо плакатам выше):

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
AhrB
источник
5

Для удаления используйте 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.*

alexbhandari
источник
5

Я взял список 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
Hailong
источник
1
Отлично сработало для меня! Пропустите последнюю строку, чтобы оставить узел не установленным в вашей системе.
Rich
Спасибо @Rich за комментарий, последнюю строчку я закомментировал.
hailong
3

Небольшой удобный сценарий, расширяющий предыдущие ответы.

#!/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
Миша Тавхелидзе
источник
0

Мне также пришлось удалить следующие файлы, так как brew пожаловался на установку позже после удаления всех файлов вручную.

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

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

а затем сделайте следующее

brew install node 

brew link node
Срини 7
источник
Используйте разметку, чтобы отформатировать код или пути как монотипию.
buhtz 03 окт.2016,
Вопрос в том, чтобы удалить, а не установить .. вы, вероятно, неправильно
написали,
0

Следующее сработало после проб и ошибок, и эти каталоги не были доступны для записи, поэтому я удалил их и, наконец, смог заменить 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
Томас Питерс
источник
1
Я изменил ваше форматирование. Вы можете выделить блок текста и щелкнуть значок фигурной скобки, чтобы получить моноширинный текст. Или сделайте отступ в каждой строке четырьмя пробелами, если вы мазохист.
Echo Нолан