Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Mac OS X uninstall script for packaged install of node.js

To run this, you can try:

curl -ks https://gist.githubusercontent.com/nicerobot/2697848/raw/uninstall-node.sh | bash

I haven't tested this script doing it this way but i run a lot of my Gists like this so maybe this one'll work too.

Alternatively,

curl -ksO https://gist.githubusercontent.com/nicerobot/2697848/raw/uninstall-node.sh
chmod +x ./uninstall-node.sh
./uninstall-node.sh
rm uninstall-node.sh
#!/bin/sh
(( ${#} > 0 )) || {
echo 'DISCLAIMER: USE THIS SCRIPT AT YOUR OWN RISK!'
echo 'THE AUTHOR TAKES NO RESPONSIBILITY FOR THE RESULTS OF THIS SCRIPT.'
echo "Disclaimer aside, this worked for the author, for what that's worth."
echo 'Press Control-C to quit now.'
read
echo 'Re-running the script with sudo.'
echo 'You may be prompted for a password.'
sudo ${0} sudo
exit $?
}
# This will need to be executed as an Admin (maybe just use sudo).
for bom in org.nodejs.node.pkg.bom org.nodejs.pkg.bom; do
receipt=/var/db/receipts/${bom}
[ -e ${receipt} ] && {
# Loop through all the files in the bom.
lsbom -f -l -s -pf ${receipt} \
| while read i; do
# Remove each file listed in the bom.
rm -v /usr/local/${i}
done
}
done
# Remove directories related to node.js.
rm -vrf /usr/local/lib/node \
/usr/local/lib/node_modules \
/var/db/receipts/org.nodejs.*
exit 0

omarrr commented Jul 14, 2012

Nice work. I forked to edit line #16 as follows:

 [ -e /var/db/receipts/org.nodejs.pkg.bom ] || {

This looks for the existence of a file (-e) instead of a folder (-d).

Once I did that it worked like a charm. Thanks!

Bauepete commented Jan 9, 2013

Thanks.

mhulse commented Feb 19, 2013

Great script, thanks! Just FYI to anyone out there new to running shell scripts: I had to run $ chmod u+x uninstall-node.sh and then $ ./uninstall-node.sh before it worked for me. Also, there's a question on Stack related to this code if it is of help to anyone (might be a good place for comments, seeing as how GitHub does not notify anyone (at this time) when comments are posted to Gists).

@ghost

ghost commented Mar 25, 2013

Had to use mhulse's method to get it to work, thanks though!

Jurawa commented Sep 24, 2013

Awesome. Worked great, thanks!

I don't know if is really necessary, but i thing the script should delete ~/.node-gyp y ~/.npm from the local user, maybe even test is there are that directories in other users so you completely remove all what node.js creates

roman commented Nov 12, 2013

What is the purpose of (( ${#} > 0 )) ?

denji commented Nov 13, 2013

node 0.11.x forgot delete /usr/local/share/systemtap
if empty (/usr/local/share/systemtap + /usr/local/share/systemtap/tapset)

joyent/node#6141

@roman, it's a hack to skip the first block on the next run.

ravs commented Jan 6, 2014

Thanks, nice stuff.

djdiaz commented Jan 13, 2014

Thanks! Doesn't work when piped directly from curl to the shell as there is no command line to test in the first block. Might work with "sudo bash" instead, but I didn't bother to hash it out.

Thanks, worked great. And thanks for the tip mhulse.

Excellent job. Thanks!

Worked a treat for me just by saving the script locally and chmod 755 the resulting file

For now, it seems to be executed successfully! 👍 (For me)

Dint work for me :(

/usr/bin/sudo: /usr/bin/sudo: cannot execute binary file

Owner

nicerobot commented Sep 9, 2015

@TanayGahlot Sorry, if you were using the curl method, the URLs were using the old gist URLs so I had to update them to the gist.githubusercontent.com host.
@alexserver That's a curious error. It implies your sudo command doesn't have execution permissions. Maybe run diskutil repairPermissions / ?

schystz commented Sep 11, 2015

Weird, I am getting the message "Nothing to do." although org.nodejs.node.pkg.bom is existing in the /var/db/receipts directory. I also tried @omarrr's solution and even executing the script using sudo but that didn't help.

Update:
I tried executing the command lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom from the command line and it works. But if its inside the sh script I get the message can't open /var/db/receipts/org.nodejs.pkg.bom: No such file or directory.

Owner

nicerobot commented Sep 13, 2015

@schystz It looks like node's .bom file name may have changed since i originally coded this. I'll update it to look for /var/db/receipts/org.nodejs.node.pkg.bom too.

What about org.nodejs.node.npm.pkg.plist org.nodejs.pkg.plist?
Is it necessary to remove this ones?

Thank you - this worked perfectly!

linfan commented Oct 18, 2015

Nice job!!
Works perfectly for me. Finally removed the nodejs version installed by pkg installer.

Nice Work!! Thank You!!!

Thank you I just run under el capitan and everything seems fine

Seems to freeze terminal for me after echo'ing Press Control-C to quit now.

having the same problem as @ryan-lynch. after letting it run for a few minutes, I just killed the program.

/usr/bin/sudo: /usr/bin/sudo: cannot execute binary file @nicerobot

icetee commented Jan 9, 2016

@vvardhanz use alternative solution.

Wuntenn commented Jan 14, 2016

Thanks!! - Great Script!!

Running the script by pasting it into a local .sh file worked. Running it through curl did not (at least the first option described here).

However, I wanted to replace my package installed node by a brew install, but I got the following error:

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/doc/node/gdbinit
Target /usr/local/share/doc/node/gdbinit
already exists. You may want to remove it:
  rm '/usr/local/share/doc/node/gdbinit'

Removing it made brew link up node properly. Maybe this should be added to the removals?

(Uninstalled node v4.3.1 and installed v5.6.0 through brew)

morberg commented Feb 22, 2016

@ryan-lynch @youngrrrr The script will not start until you press return.

Thanks!!

Thank you I am using NodeJS package from the official website in El Capitan, then I run the script and everything seems fine.

doncadavona commented Jun 22, 2016 edited

Works like charm!
The alternative worked for me on El Capitan:

curl -ksO https://gist.githubusercontent.com/nicerobot/2697848/raw/uninstall-node.sh
chmod +x ./uninstall-node.sh
./uninstall-node.sh
rm uninstall-node.sh

rsaddey commented Jul 3, 2016 edited

How about virtualising Node.js within Docker in the first place? Right now, Docker appears to be targeted towards builds and production, but IMHO it's a perfect tool to distribute, customise and share developer environments as well. I took a first (quite humble - I'm a newbie to both Docker and Node.js) approach at https://blog.saddey.net/2016/07/03/using-docker-to-create-ionic-2-pwa-developer-environment/ Does this make any sense?

@doncadavona's solution worked like a charm.

@doncadavona's comment worked! Thanks for this gist! 😄

the screen is frozen, im trying to uninstall node js from my computer and reinstall it wt homebrew..any help will be appreciated. i have os x el capitan.

Zenfeder commented Dec 8, 2016

Thanks!

Sweet thank you!

I didn't try
curl -ks https://gist.githubusercontent.com/nicerobot/2697848/raw/uninstall-node.sh | bash

But the alternative way worked for me on macOS Sierra (10.12.4) to uninstall Node v7.9.0.

Thank you @nicerobot!

maiky15 commented May 11, 2017

great!
try node -v after and No such file or directory ;)

thanks.. Great

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment