我正要在家裏啓動一些node.js開發,但是在全局安裝npm軟件包時偶然發現了一些奇怪的行爲。npm爲全局安裝的軟件包設置了奇怪的權限
我用WebStorm作爲我的IDE,並且希望使用ECMAScript6功能,這意味着我必須transpile來源,其WebStorm不使用巴貝爾。
所以,我試圖在全球範圍內安裝巴貝爾:
$ sudo npm install -g babel-cli
什麼情況是,該文件是從根用戶的所有訪問的罰款,只要babel-cli
目錄中的所有文件和目錄看起來不錯我看起來像root
。問題是當我嘗試看包,或者使用它,因爲其他用戶:
$ ls -l /usr/lib/node_modules/babel-cli/
ls: cannot access '/usr/lib/node_modules/babel-cli/lib': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/index.js': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/scripts': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/node_modules': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/package.json': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/README.md': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/bin': Permission denied
total 0
d????????? ? ? ? ? ? bin/
d????????? ? ? ? ? ? lib/
d????????? ? ? ? ? ? node_modules/
d????????? ? ? ? ? ? scripts/
-????????? ? ? ? ? ? index.js
-????????? ? ? ? ? ? package.json
-????????? ? ? ? ? ? README.md
不要緊,我安裝的軟件包,它們都成了這個樣子。
我在Ubuntu 16.04上使用node.js v6.3.0和npm 3.10.3。
我剛安裝的node.js的指示here。如果我嘗試更新npm
,那麼全局npm目錄也會發生同樣的情況,並且npm變得不可用,除了root
。
當我列出了全球node_modules
作爲用戶我看到
$ ll /usr/lib/node_modules/
total 8,0K
drwxr--r-- 6 nobody root 4,0K jul 15 23:50 babel-cli/
drwxr-xr-x 10 root root 4,0K jul 15 23:21 npm/
除了通過nobody
所擁有的目錄我看沒有什麼特別的。
當我安裝軟件包時,當然沒有錯誤。
npm和/或節點有問題嗎? Ubuntu有什麼問題嗎?或者我如何安裝節點?可能是什麼原因 這樣的事情發生?
本地安裝工作正常,併爲babel-cli
包是安裝它作爲本地開發包可以接受的解決辦法。我仍然想知道在全局安裝軟件包時會發生什麼,以及爲什麼。
問題answered here。問題與npm
和node
無關。
我使用節點源代碼庫和我沒有看到這些問題。但是,我正在使用較舊的npm運行節點4.4。你是否僅僅爲了babel而遇到他的問題?其他CLI工具如grunt,gulp,bower等呢? – tsturzl
@tsturzl對於我在全球安裝的所有軟件包都是一樣的。 –
永遠不要使用'sudo'和'npm'。你只是在問問題。吹走節點,所有npm模塊和目錄,並以普通用戶權限安裝所有內容。 – xdumaine