Як видалити вузли, встановлені з 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в вище. Суть була оновлена ​​відповідно.


2
Дуже корисний. Єдине, що я хотів би додати, це те, що вузол 0,4 ish встановлений в / usr, а не / usr / local. Отже "sudo rm / usr / local / $ {i}" потрібно змінити. Для мене я зробив "sudo rm / $ {i}", оскільки бом-файли, де сподобався патч: "./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тепер нестабільний качальний вузол!
Бент Кардан

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


У мене встановили шахту в / 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

1
СПАСИБІ. Мій MySQL перестав працювати, тому мені просто потрібно було його видалити, це + перезапуск зробив свою справу.
мізукі

Мені також довелося видалити два додаткові файли: /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.


3
мені було недостатньо - довелося такожsudo rm /usr/local/bin/node /usr/local/share/man/man1/node.1 /usr/local/lib/dtrace/node.d
Герцель Гіннес

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

5

Використовуйте npm для видалення. Щойно запущений sudo npm uninstall npm -gфайл видаляє всі файли. Щоб позбутися від сторонніх речей, таких як bash pathnames, виконайте це (з відповіді nicerobot):

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


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

1
Для мене чудово працювали! Пропустіть останній рядок, щоб вузол не було встановлено у вашій системі.
Багатий

Дякую @Rich за коментар, я прокоментував останній рядок.
Хайлонг

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

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

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

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

а потім зробіть наступне

brew install node 

brew link node

Використовуйте розмітку, щоб відформатувати ваш код або патчі як монотип.
buhtz

Питання про видалення не встановлення .. ви, мабуть, неправильно
написали,

0

Наступні працювали після проб і помилок, і ці каталоги не були доступними для запису, я видалив їх і, нарешті, зміг отримати вузол & 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
Я змінив ваше форматування. Ви можете вибрати блок тексту та натиснути значок фігурної дужки, щоб отримати текст простору. Або відступіть кожен рядок з чотирма пробілами, якщо ви мазохіст.
Ехо Нолан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.