Fork me on GitHub

macos如何科学的安装homebrew跟npm?

其实我本来不想写这篇教程的,但因为NPM实在是太坑了,真的坑,而且为了安装NPM我卸载了电脑上所有的NPM相关的包,比如gitbook,hexo。而gitbook跟hexo中有很大一部分是基于NMP的插件。而brew又是macos中比较好用的一个包管理软件,安装软件跟卸载软件都非常方便,所以,我决定所有的包都通过brew来安装。

本文单纯的为了写下来记录,后续发现这个问题翻自己的教程就能够解决了。

1. 安装brew

1.1 终端安装

参考官方的教程进行安装,这一步基本没有多大的问题,打开mac终端,直接输入下面代码:

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

1.2 校验安装成果

使用官方教程安装完成后使用下面两行命令,分开执行下。

1
2
brew update
brew doctor

通过字面意思就可以看出来,brew update就是用来更新brew,brew doctor是用来检查brew有什么问题的。执行完这两部操作之后发现有什么问题,根据提示进行操作即可。

1.3 添加系统环境变量(PATH)

将/usr/local/bin添加到PATH路径的最前面,在命令行输入下面代码:

1
echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

完成操作之后在终端中输入echo $PATH

1
2
3
huixingdeMacBook-Pro:~ huixing$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
huixingdeMacBook-Pro:~ huixing$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

可以发现/usr/local/bin已经添加到系统环境变量中了,其中冒号“:”是用来表示分割的。

1.4 使用brew

使用其实就比较简单了,直接终端输入brew install wget即可进行安装,比如要安装npm的,直接在终端输入brew install node即可。

PS:卸载brew我就不想弄了,想看的下方参考资料2有介绍。

参考资料:

  1. Homebrew官方文档:点击查看
  2. 程序员的自我修养:点击查看

2. 安装npm

看了上文似乎发现npm也没那么难吧,一行指令即可搞定brew install node。看上去似乎挺简单的,但从我单独来说npm就应该知道,此事必有蹊跷。为什么呢,我在npm这里遇到的坑最多,失败次数超过10次,最后神奇的自己好了。

npm有两种安装方式,一种是直接在npm官网下载包,一个稳定版,一个最新版,直接下载即可安装。但是今天我在安装另外两款插件的时候,npm直接报错了,我考虑到统一管理,不管是Python,还是npm,我都用brew来管理,这样比较方便,所以就用brew安装,前后踩了数次坑,在我找教程的过程中,也发现了很多跟我一样遇到问题的朋友。

先试着在终端输入brew link node用来连接node,发现报了以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
huixingdeMacBook-Pro:~ huixing$ brew link node
Linking /usr/local/Cellar/node/10.8.0...
Error: Could not symlink include/node/common.gypi
Target /usr/local/include/node/common.gypi
already exists. You may want to remove it:
rm '/usr/local/include/node/common.gypi'

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

先别着急,我一开始就着急了,妈呀,这是报的啥错误,完全看不懂,后来在谷歌翻译的帮助下,勉强看懂了,反正大概意思就是有个什么东东已经存在了,我需要删除,我一想,干脆卸载了npm吧,终端输入brew uninstall node,出现了以下剧情。

1
2
3
4
5
huixingdeMacBook-Pro:~ huixing$ brew uninstall node
Error: Refusing to uninstall /usr/local/Cellar/node/10.8.0
because it is required by yarn, which is currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies node

发现居然还卸载不了,而且看字面意思,貌似跟我的另一个包管理软件yarn还有点关系,这可如何是好,这中间我做了N种尝试,运行了各种删除代码,但是就是不好使。然后我尝试着执行brew install node,发现又报了下面的错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
huixingdeMacBook-Pro:~ huixing$ brew install node
Updating Homebrew...
^CWarning: node 10.8.0 is already installed, it's just not linked
You can use `brew link node` to link this version.
huixingdeMacBook-Pro:~ huixing$ brew link node
Linking /usr/local/Cellar/node/10.8.0...
Error: Could not symlink include/node/common.gypi
Target /usr/local/include/node/common.gypi
already exists. You may want to remove it:
rm '/usr/local/include/node/common.gypi'

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

我看到了一条很关键的信息,就是rm一个文件那一行,果断执行,中间失败次数非常多,就不具体描述了,最后成功的时候是下面这个样子的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
huixingdeMacBook-Pro:/ huixing$ brew link node
Linking /usr/local/Cellar/node/10.8.0...
Error: Could not symlink lib/dtrace/node.d
/usr/local/lib/dtrace is not writable.
huixingdeMacBook-Pro:/ huixing$
huixingdeMacBook-Pro:/ huixing$ $ sudo rm -rf /usr/local/lib/node_modules/npm
-bash: $: command not found
huixingdeMacBook-Pro:/ huixing$
huixingdeMacBook-Pro:/ huixing$ $ sudo rm -rf '/usr/local/lib/node_modules/npm'
-bash: $: command not found
huixingdeMacBook-Pro:/ huixing$ $ sudo rm -rf '/usr/local/lib/node_modules'
-bash: $: command not found
huixingdeMacBook-Pro:/ huixing$ brew link node
Linking /usr/local/Cellar/node/10.8.0... 7 symlinks created
huixingdeMacBook-Pro:/ huixing$ node -v
v10.8.0

我把电脑安装的yarn,gitbook,hexo全部删掉了,只要带有npm包的东东全部都删了,然后疯狂的rm -rf含有node的文件夹,最后居然奇迹般的成功了,还好找了很多教程靠谱。一直安装失败最重要的原因就是之前的nodejs没有删除干净,而且我之前是在官网下载包安装的

参考资料:

  1. mac用brew升级node最新版本,npm出现问题问题解决:点击查看
  2. 修復npm的漫漫長路:点击查看
  3. 用brew安装node遇到的问题:点击查看

3. 安装yarn

yarn的安装单纯是为了记录,yarn的功能跟npm差不多,但是我有一个用到的包就是放在yarn里面的,所以也必须安装yarn,直接终端执行brew install yarn即可。

1
2
3
4
5
huixingdeMacBook-Pro:~ huixing$ brew install yarn
Updating Homebrew...
==> Downloading https://yarnpkg.com/downloads/1.9.2/yarn-v1.9.2.tar.gz
Already downloaded: /Users/huixing/Library/Caches/Homebrew/yarn-1.9.2.tar.gz
🍺 /usr/local/Cellar/yarn/1.9.2: 14 files, 4.2MB, built in 1 second

这里我不知道还要不要设置系统的环境变量,应该不用了,就这样吧。安装的过程中最好多看看英文提示,用翻译工具翻译下,很多解决问题的办法就隐藏在提示中间。

参考资料
yarn官网:点击查看