npm install —— sudo or not

此前经常遇到一个问题

npm install xxx -g

不带sudo会报权限的错误,只好每次都

sudo npm install xxx -g

但是很多人也知道,这样不是那么正确的,原因见此:http://howtonode.org/introduction-to-npm。尽管如此,一直到发现带了sudo无法安装spm包,不得不正视这个问题。当时的情形就是,不带sudo装不上,报错,权限不够;带了sudo,spm会装一半提醒说不要带sudo!我至今没搞清楚为什么就spm这么特殊,但别无选择。

对于这个问题,网上并没有很系统的解释或说明,以下主要属于个人总结、归纳。

  • npm需不需要带sudo是受~/.npm/usr/local/share/npm/bin这俩目录的owner影响的,从理论上说,把这俩目录chown下就好了,不过我没试过,我总结这些的时候,我的npm已经正常了。

  • 如何从一开始安装就保持正常,而不是其后手动修改目录所有者属性?主要取决于安装方式。比如我以前安装都是编译node最新代码,然后用apt-get装npm。问题是apt-get install是需要sudo的,这样它在安装过程中建立的文件夹等也自然是root身份创建的,就出现了上面说的情况。所以呢,我放弃使用apt-get安装npm之后,就没有之前的问题了。具体安装过程可以看这个:https://gist.github.com/isaacs/579814

大概就是这些。