web-dev-qa-db-ja.com

gyp WARN EACCESユーザー「root」にはdev dirにアクセスする権限がありません

しようとしている

Sudo npm install protractor -g

そして、同じ悪名高いエラー/警告が再び発生しました(利用できませんでした):

gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/dmitrizaitsev/.node-gyp/0.12.0"

起こるように思われるのは、node version 0.12.0は、マシン上の現在のノードバージョンであるにもかかわらず、同じインストール中に何度もダウンロードおよび再構築されます。

node -v
v0.12.0

質問:

  • ディレクトリ「/Users/dmitrizaitsev/.node-gyp/0.12.0」は実際にはありません!なぜこのような誤解を招くメッセージですか?

  • なぜこのディレクトリはnode v0.12.0また、以前の正常な再構築中にnode-gyp

  • (明らかに)これを防ぐにはどうすればよいですか?

重要な場合は、Mac OSX 10.8.5を実行します。

41
Dmitri Zaitsev

更新。より良い方法があります-npmのデフォルトのグローバルディレクトリを、既に適切なアクセス許可を持っているユーザーサブディレクトリに変更するため、最初からシステムファイルのアクセス許可や所有権を変更する必要はありません。

https://docs.npmjs.com/getting-started/fixing-npm-permissions で推奨されているとおり:

  1. グローバルインストール用のディレクトリを作成します。
mkdir ~/.npm-global
  1. 新しいディレクトリパスを使用するようにnpmを構成します。
npm config set prefix '~/.npm-global'
  1. ~/.profile(または~/.bash_profileなど)ファイルを開くか作成し、次の行を(ファイルの最後に)追加します。
export PATH=~/.npm-global/bin:$PATH
  1. コマンドラインで、システム変数を更新します。
source ~/.profile

またはsource ~/.bash_profile

トピックに関するSindre Sorhusのガイドも参照してください。 https://github.com/sindresorhus/guides/blob/master/npm-global-without-Sudo.md


今、何が間違っていたのか理解しました:

ディレクトリに間違った権限がありました-それはwritableではありませんでした(「accessible」よりも優れたエラーメッセージでした)。

また、書き込み可能ではないため、使用するたびに一時ディレクトリが使用および削除されたため、ダウンロード全体を何度も実行する必要がありました。

解決策は、ユーザーのアクセス許可を設定することです

Sudo chown -R $USER <directory>

決してSudo npmすることはありません。 Sudo npmを実行するたびに、作成されたすべてのサブディレクトリに誤った権限が付与され、後で問題が発生するようです。

詳細はこちらを参照

67
Dmitri Zaitsev

で試してください:

Sudo npm install -gmodule-unsafe-perm

18
Miki Nacucchi

これは、このディレクトリにフォルダ「/Users/dmitrizaitsev/.node-gyp/0.12.0」がないためです。

0.12.0という名前の新しいフォルダを作成するだけですノードのバージョン番号

問題が解決します。

2
Jack Lee