How to Mac
In this tutorial we will learn to install NodeJS and NPM on Mac using Homebrew.
Homebrew is "The missing package manager for macOS".
Open terminal and type the following command.
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
This will install Homebrew on your Mac. To check the version type the following command.
$ brew -v
Output
YUSUF-MacBook-Pro:~ yusufshakeel$ brew -v Homebrew 1.1.11 Homebrew/homebrew-core (git revision be9c; last commit 2017-03-09)
If you are installing NodeJS via the installer from https://nodejs.org/ then you have to use sudo to make sure that it installs correctly. After that you have to make changes in your system $PATH by adding the path of the node executable. And if you want to uninstall node then you have track all the files that were created and get rid of them. In short its a long process.
sudo
$PATH
That's why Homebrew is used. It makes the job easy. It will install/uninstall Node easily.
In the terminal type the following command to install Node.
$ brew install node
If everything installed successfully then you can type in the following command in the terminal to check the Node and NPM version.
$ node -v v7.7.2
$ npm -v 4.1.2
YUSUF-MacBook-Pro:~ yusufshakeel$ brew install node ==> Installing dependencies for node: icu4c ==> Installing node dependency: icu4c ==> Downloading https://homebrew.bintray.com/bottles/icu4c-58.2.sierra.bottle.tar.gz Already downloaded: /Users/yusufshakeel/Library/Caches/Homebrew/icu4c-58.2.sierra.bottle.tar.gz ==> Pouring icu4c-58.2.sierra.bottle.tar.gz ==> Caveats This formula is keg-only, which means it was not symlinked into /usr/local. macOS provides libicucore.dylib (but nothing else). If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile For compilers to find this software you may need to set: LDFLAGS: -L/usr/local/opt/icu4c/lib CPPFLAGS: -I/usr/local/opt/icu4c/include ==> Summary /usr/local/Cellar/icu4c/58.2: 242 files, 65MB ==> Installing node ==> Downloading https://homebrew.bintray.com/bottles/node-7.7.2.sierra.bottle.tar.gz ######################################################################## 100.0% ==> Pouring node-7.7.2.sierra.bottle.tar.gz 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 /usr/local/share/doc/node is not writable. You can try again using: brew link node ==> Using the sandbox ==> Caveats Bash completion has been installed to: /usr/local/etc/bash_completion.d ==> Summary /usr/local/Cellar/node/7.7.2: 3,148 files, 40.2MB
If you look above you will see that we have some issues.
macOS provides libicucore.dylib (but nothing else). If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile
So, in terminal type the following command.
$ echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile $ echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile
We also got an error "Error: The `brew link` step did not complete successfully".
So, type the following command.
$ brew link node
YUSUF-MacBook-Pro:~ yusufshakeel$ brew link node Linking /usr/local/Cellar/node/7.7.2... Error: Could not symlink share/man/man1/node.1 Target /usr/local/share/man/man1/node.1 already exists. You may want to remove it: rm '/usr/local/share/man/man1/node.1' To force the link and overwrite all conflicting files: brew link --overwrite node To list all files that would be deleted: brew link --overwrite --dry-run node
The above output says:
You may want to remove it: rm '/usr/local/share/man/man1/node.1'
So, use the following command.
$ sudo rm '/usr/local/share/man/man1/node.1'
Now, to list all files that would be deleted use the following command.
$ brew link --overwrite --dry-run node
YUSUF-MacBook-Pro:~ yusufshakeel$ brew link --overwrite --dry-run node Would remove: /usr/local/share/systemtap/tapset/node.stp /usr/local/lib/dtrace/node.d YUSUF-MacBook-Pro:~ yusufshakeel$ brew link --overwrite node Linking /usr/local/Cellar/node/7.7.2... Error: Could not symlink share/systemtap/tapset/node.stp /usr/local/share/systemtap/tapset is not writable.
Now we got the Error: Could not symlink share/systemtap/tapset/node.stp /usr/local/share/systemtap/tapset is not writable.
To fix this we have to change the username and group of the systemtap directory.
Type the following command in the terminal.
$ cd /usr/local/share $ sudo chown -R yourusername:yourgroupname systemtap
YUSUF-MacBook-Pro:~ yusufshakeel$ cd /usr/local/share YUSUF-MacBook-Pro:share yusufshakeel$ pwd /usr/local/share YUSUF-MacBook-Pro:share yusufshakeel$ ls -la total 0 drwxrwxr-x 13 root admin 442 Nov 29 00:08 . drwxr-xr-x 25 root wheel 850 Feb 22 10:22 .. drwxrwxr-x 3 root wheel 102 Oct 5 2015 systemtap YUSUF-MacBook-Pro:share yusufshakeel$ sudo chown -R yusufshakeel:admin systemtap Password: YUSUF-MacBook-Pro:share yusufshakeel$ ls -la total 0 drwxrwxr-x 13 root admin 442 Nov 29 00:08 . drwxr-xr-x 25 root wheel 850 Feb 22 10:22 .. drwxrwxr-x 3 yusufshakeel admin 102 Oct 5 2015 systemtap
Now, run the --overwrite --dry-run command again.
YUSUF-MacBook-Pro:~ yusufshakeel$ brew link --overwrite --dry-run node Would remove: /usr/local/share/systemtap/tapset/node.stp /usr/local/lib/dtrace/node.d YUSUF-MacBook-Pro:~ yusufshakeel$ brew link --overwrite node Linking /usr/local/Cellar/node/7.7.2... Error: Could not symlink lib/dtrace/node.d /usr/local/lib/dtrace is not writable.
Now, we got the Error: Could not symlink lib/dtrace/node.d /usr/local/lib/dtrace is not writable.
To fix this we have to change the username and group of the dtrace directory.
In the terminal type in the following command.
$ cd /usr/local/lib $ sudo chown -R yourusername:yourgroupname dtrace
YUSUF-MacBook-Pro:share yusufshakeel$ cd /usr/local/lib YUSUF-MacBook-Pro:lib yusufshakeel$ pwd /usr/local/lib YUSUF-MacBook-Pro:lib yusufshakeel$ ls -la total 52344 drwxrwxr-x 22 root admin 748 Nov 24 12:30 . drwxr-xr-x 25 root wheel 850 Feb 22 10:22 .. drwxrwxr-x 3 root wheel 102 Aug 24 2016 dtrace YUSUF-MacBook-Pro:lib yusufshakeel$ sudo chown -R yusufshakeel:admin dtrace YUSUF-MacBook-Pro:lib yusufshakeel$ ls -la total 52344 drwxrwxr-x 22 root admin 748 Nov 24 12:30 . drwxr-xr-x 25 root wheel 850 Feb 22 10:22 .. drwxrwxr-x 3 yusufshakeel admin 102 Aug 24 2016 dtrace
Now, run the --overwrite --dry-run command again. Hopefully you will get no error. So, its time to run the --overwrite command.
$ brew link --overwrite node
YUSUF-MacBook-Pro:~ yusufshakeel$ brew link --overwrite node Linking /usr/local/Cellar/node/7.7.2... 7 symlinks created
Congratulation! You have successfully installed NodeJS and NPM on your Mac via Homebrew.