web-dev-qa-db-ja.com

rootユーザーを使用したNPMインストール許可拒否エラー

ルートユーザーを使用してNVMを使用してローカルマシンにnpm/nodeの新規インストールを作成しましたが、すべて問題なく見えますが、npm install --unsafeを使用してインストールしようとしたときの問題ですプロジェクトフォルダーのエラーに対する-perm -verboseコマンドがターミナルに表示されます。

npm verb stack Error: Command failed: /usr/bin/git clone --depth=1 -q -b 0.0.7 https://github.com/Mango/emitter.git /root/.npm/_cacache/tmp/git-clone-28a98ad9
npm verb stack fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-28a98ad9': Permission denied
npm verb stack 
npm verb stack     at ChildProcess.exithandler (child_process.js:282:12)
npm verb stack     at ChildProcess.emit (events.js:182:13)
npm verb stack     at maybeClose (internal/child_process.js:957:16)
npm verb stack     at Socket.stream.socket.on (internal/child_process.js:378:11)
npm verb stack     at Socket.emit (events.js:182:13)
npm verb stack     at Pipe._handle.close [as _onclose] (net.js:598:12)
npm verb cwd /web/nbltv
npm verb Linux 4.15.0-29-generic
npm verb argv "/root/.nvm/versions/node/v10.1.0/bin/node" "/root/.nvm/versions/node/v10.1.0/bin/npm" "install" "--unsafe-per" "-verbose"
npm verb node v10.1.0
npm verb npm  v5.6.0
npm ERR! code 128
npm ERR! Command failed: /usr/bin/git clone --depth=1 -q -b 0.0.7 https://github.com/Mango/emitter.git /root/.npm/_cacache/tmp/git-clone-28a98ad9
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-28a98ad9': Permission denied
npm ERR! 
npm verb exit [ 1, true ]

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-08-20T01_36_33_496Z-debug.log

NPMバージョン-5.6 NODEバージョン-10.1

どんな助けも大いに専門化されるでしょう。ありがとう!

4
PenAndPapers

Chownnode_modulesを停止し、Sudoとして実行しないでください。

NPMはSudoを使用したネイティブモジュールのインストールを拒否するため、これはたとえばセキュリティリスクであるため、常に_.npm_ディレクトリの所有権を持っている必要があります。

Sudo chown -R $(whoami) ~/.npmを試して、これが機能するかどうかを確認してください。

または ノードバージョンマネージャーで再インストールdocs で推奨されているようにルートなしで:

_curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
_
10
U-ways

このエラーを回避するには、ユーザー空間に新しいグローバルストレージを作成することをお勧めします。 Sudoを使用したり、ロケーションの所有権を変更したりしないでください。

$ mkdir ~/.npm-global
$ npm config set prefix '~/.npm-global'
$ export PATH=~/.npm-global/bin:$PATH
$ source ~/.profile

ただし、npm 5.6を使用しているため、これはあなたにとってより関連性があるかもしれません:

npx:グローバルコマンドを実行する代わりの方法

Npmバージョン5.2以降を使用している場合、特にコマンドがたまにしか必要ない場合は、グローバルコマンドを実行するための代替方法としてnpxを検討することをお勧めします。詳細については、 npxに関するこの記事 を参照してください。

ソース: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally

7
aalaap

@ U-waysの回答は非常に優れていますが、以下ではなくnvmを使用する人にとっては適切です。

Sudo chown -R $(whoami) ~/.npm

行う

Sudo chown -R $(whoami) ~/.nvm

これは私を形作る作品

0
Lilian Bideau