Nodejs.orgのパッケージを通してnodeとnpmをインストールしただけで、npmで何かを検索またはインストールしようとすると、コマンドを実行しない限り、次のエラーが発生します。これは権限の問題です。私はすでに管理者です。
npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/chietala/npm-debug.log
npm ERR! not ok code 0
これはあなたのホームディレクトリのパーミッションの問題のように見えます。 .npm ディレクトリの所有権を取り戻すには、次のコマンドを実行します。
Sudo chown -R $(whoami) ~/.npm
npmディレクトリへの書き込みなどを行う場合は、Nodeのインストール時に使用した権限が必要になります(npm link
、npm install -g
など。)。
おそらくルート権限でノードのインストールを実行したため、グローバルパッケージのインストールでルートになるように求められます。
権限でハッキングせずに、正しい方法でノードをインストールしてください。
開発マシンでは、root権限でノードをインストールして実行しないでください。そうしないと、npm link
、npm install -g
などに同じ権限が必要になります。
NVM (Node Version Manager)を使用すると、ルート権限なしでNodeをインストールできます。また、Nodeの多くのバージョンをインストールして簡単に操作できます..開発に最適です。
nvm install node
これで、npm link
、npm install -g
でrootになる必要がなくなります。
編集:参照 https://docs.npmjs.com/getting-started/fixing-npm-permissions
パーミッションでハッキングせずに、npmパッケージをグローバルに正しい方法でインストールしてください。
OSXまたはLinuxを使用している場合は、グローバルパッケージのユーザー専用ディレクトリを作成し、npm
およびnode
をセットアップできます。グローバルにインストールされたパッケージを見つける方法を知るため。
this great article をチェックしてください。nudoモジュールをSudoなしでグローバルにインストールする手順を追って説明しています。
参照: npmパーミッションの修正 に関するnpmのドキュメント。
また、node_modules
ディレクトリへの書き込み権限が必要です。
Sudo chown -R $USER /usr/local/lib/node_modules
「システムグローバル」フォルダの所有者を変更するのはハッキングです。新規インストールでは、「ユーザーグローバル」プログラム用に既に書き込み可能な場所を使用するようにNPMを構成します。
npm config set prefix ~/npm
次に、そのフォルダーをパスに追加してください:
export PATH="$PATH:$HOME/npm/bin"
@ ErikAndreas ' answer to NPMモジュールはSudoなしではグローバルにインストールされません および 長いステップバイステップガイド を参照してください= by @ sindresorhus with $MANPATH
も設定します。
私はBootstrap 3用に私のCSSをコンパイルするためにRecess( https://github.com/Twitter/recess )をインストールするときにこれに遭遇しました。
くぼみを取り付けるとき:
-npm install recess -g
Noah のように、home
ディレクトリのアクセス権をロック解除する必要があります。
Sudo chown -R `whoami` ~/.npm
Xilo のように、node_modules
ディレクトリへの書き込み権限も必要です。それでもうまくいかない場合は、次のことを試してください。
Sudo chown -R `whoami` /usr/local/lib/node_modules
それでもエラーが発生する場合は、 /usr/local
権限の修正 も必要となるでしょう。
Sudo chown -R `whoami` /usr/local
この記事の に示されているように、あなたがMacを使っているのであれば/usr/local/
は実際にはシステムディレクトリではありません。しかし、あなたがLinuxを使っているなら、マルチユーザーフレンドリーでシステムディレクトリセーフな(しかしもっと複雑な)解決策については、 Christopher Will の答えを見てください。
他の回答では、システムディレクトリの所有権やアクセス権を特定のユーザーに変更することを提案しています。私はそうすることから非常に不利になります、これは非常に厄介になるかもしれなくて、システム全体を台無しにするかもしれません!
これはマルチユーザーをサポートする、より一般的でより安全なアプローチです。
ノードユーザー用の新しいグループを作成し、このグループに必要なユーザーを追加します。次に、ノードに依存するファイル/ディレクトリの所有権をこのグループに設定します。
# Create new group
Sudo groupadd nodegrp
# Add user to group (logname is a variable and gets replaced by the currently logged in user)
Sudo usermod -a -G nodegrp `logname`
# Instant access to group without re-login
newgrp nodegrp
# Check group - nodegrp should be listed as well now
groups
# Change group of node_modules, node, npm to new group
Sudo chgrp -R nodegrp /usr/lib/node_modules/
Sudo chgrp nodegrp /usr/bin/node
Sudo chgrp nodegrp /usr/bin/npm
# (You may want to change a couple of more files (like grunt etc) in your /usr/bin/ directory.)
今すぐあなたは簡単にユーザーとしてあなたのモジュールをインストールすることができます
npm install -g generator-angular
いくつかのモジュール(grunt、bower、yoなど)はまだrootとしてインストールする必要があります。これは、それらが/ user/bin /にシンボリックリンクを作成するためです。
編集
3年後、 Node Version Manager を使用することをお勧めします。それはあなたに多くの時間と手間をかけません。
気を付けろ!!!気を付けろ!!!気を付けろ!!!
セキュリティリスクのため、chownまたはchmodがNOTソリューションです。
代わりにこれを行ってください:
あなたが電話をするなら、最初にnpmが指すところをチェックしてください。
npm config get prefix
/ usrが返された場合は、次の操作を実行できます。
mkdir ~/.npm-global
export NPM_CONFIG_PREFIX=~/.npm-global
export PATH=$PATH:~/.npm-global/bin
これはあなたのホームディレクトリにnpmディレクトリを作成し、それをnpmにポイントします。
この変更を恒久的なものにするには、export-コマンドを.bashrcに追加する必要があります。
echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=$PATH:~/.npm-global/bin" >> ~/.bashrc
EACCES
エラーでnpm install
パーミッションを修正する方法についての 公式ドキュメント は https://docs.npmjs.com/getting-started/fixing-npm-permissions にあります。
OSXで.pkg
インストーラーを使用してノードを新規インストールした後、この問題に遭遇しました。ここにいくつかの素晴らしい答えがあります、しかし私はまだnpmjs.comへのリンクを見ませんでした。
オプション1:権限をnpmのデフォルトディレクトリに変更します
Npmのディレクトリへのパスを見つけます。
npm config get prefix
多くのシステムでは、これは /usr/local になります。
_ warning _ :表示されたパスが /usr だけの場合は、オプション2に切り替えます。
Npmのディレクトリの所有者を現在のユーザの名前(あなたのユーザ名!)に変更します。
Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
これは、npmや他のツール( lib/node_modules 、 bin 、および share )で使用されるサブフォルダのアクセス権を変更します。
オプション2:npmのデフォルトディレクトリを別のディレクトリに変更する
他のユーザーとシステムを共有している場合など、npmが使用するデフォルトディレクトリの所有権を変更したくない場合があります(つまり、 /usr )。
代わりに、別のディレクトリを使用するようにnpmを設定できます。私たちの場合、これは私たちのホームフォルダの隠しディレクトリになります。
グローバルインストール用のディレクトリを作成します。
mkdir ~/.npm-global
新しいディレクトリパスを使用するようにnpmを設定します。
npm config set prefix '~/.npm-global'
〜/ .profileファイルを開くか作成して、次の行を追加します。
export PATH=~/.npm-global/bin:$PATH
コマンドラインに戻り、システム変数を更新します。
source ~/.profile
ここでもっと答えが必要であるかのように、とにかく..
Sindre Sorusは OS XとLinuxにSudoを使わずにnpmパッケージをグローバルにインストールする パーミッションを台無しにせずにきれいにインストールする方法を概説しています:
これは与えられたユーザのためにパッケージをグローバルにインストールする方法です。
グローバルパッケージ用のディレクトリを作成します
mkdir "${HOME}/.npm-packages"
あなたの.bashrc/.zshrcで将来の使用のためにこのディレクトリを参照してください。
NPM_PACKAGES="${HOME}/.npm-packages"
グローバルにインストールされたパッケージをどこに保存するかをnpmに指示します。
$HOME/.npmrc
ファイルに以下を追加してください。prefix=${HOME}/.npm-packages
ノードがそれらを見つけることを確認してください。以下を.bashrc/.zshrcに追加します。
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
インストール済みのバイナリとmanページが見つかるようにしてください。以下を
.bashrc
/.zshrc
に追加してください。PATH="$NPM_PACKAGES/bin:$PATH" # Unset manpath so we can inherit from /etc/manpath via the `manpath` # command unset MANPATH # delete if you already modified MANPATH elsewhere in your config MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
上記の手順を自動的に行うための npm-g_nosudo をチェックしてください
最新の更新については このガイドの入手先 をご覧ください。
Npm install -g somepackageを実行すると、root/Administratorとしてコマンドを再実行するように要求するEACCESエラーが発生する場合があります。これは権限の問題です。
それは 修正が簡単です 、あなたの端末を開いてください(Applications> Utilities> Terminal)。
Sudo chown -R $USER /usr/local/lib/node_modules
**後で問題が発生する可能性があるため、Sudoではパッケージ管理を使用しないことを強くお勧めします(Sudo npm -g install something)。
TL、DR
グローバルパッケージをインストールするために
Sudo -i
を実行するときは、常にSudo -H
またはnpm install
を使用してください。
-
npm
を使用すると、パッケージをユーザーのホームディレクトリにダウンロードします。 Sudoとして実行すると、npm
はファイルを同じディレクトリにインストールしますが、現在はrootが所有しています。
ですから、これはnpm
を使ったことのあるすべての人に絶対に起こることです。
npm install foo
を使って問題なくローカルパッケージをインストールするSudo install -g foo-cli
を使って問題なくグローバルパッケージをインストールするnpm install bar
でローカルパッケージをインストールしようとしていますnpm
ディレクトリに再度アクセスする必要があるので、chmod
デザイナーに不満を感じますSudoで-i
または-H
オプションを使用すると、ホームディレクトリはroot
のホームディレクトリになります。どのグローバルインストールでも、/root/.npm
のroot
所有ファイルの代わりに/home/me/.npm
にパッケージをキャッシュします。
グローバルパッケージをインストールするためにSudo -i
を実行するときは、常にSudo -H
またはnpm install
を使用するだけで、npm
権限の問題は解消されます。
いいね。
http://hood.ie/blog/why-you-shouldnt-use-Sudo-with-npm.html
- q.v. すでに犯されたnpm
を修正するための一般的な回答.
Mac用(Christoper Willの回答から採用)
Mac OS X 10.9.4
システム設定>ユーザーとグループ>(ロック解除)> +を押します。
新規アカウント> "グループ"
アカウント名:nodegrp
グループを作成したら、このグループに含まれるようにユーザーをチェックします
Sudo chgrp -R nodegrp/usr/local/lib/node_modules /
Sudo chgrp nodegrp/usr/bin/node
Sudo chgrp nodegrp/usr/bin/npm
Sudo chown -R $(whoami):nodegrp〜/ .npm
NPMモジュールはSudoなしではグローバルにインストールされない で同様の問題がありました、問題はノードをインストールしたときにchris/lea ppa経由でSudoでそれをしたrepo。
私の解決策は、ノードをアンインストールしてからこの方法でインストールすることでした:
Nodejs.orgから最新の安定したノードソースをダウンロードします#私の場合、node-v0.10.20.tar.gz
tar -zxf node-v0.10.20.tar.gz #uncompress sources
cd node-v0.10.20#非圧縮フォルダーを入力
Sudo chown $ USER -R/usr/local
./configure --prefix =/usr/local && make && make install
PD:/ usr/localフォルダーの所有権を変更したくない場合は、既に所有している場所にインストールできます。このアプローチの問題は、後でnodeコマンドを使用できるように、インストールフォルダーをbashコマンドラインでバインドする必要があることです。
mkdir〜/ opt
./configure --prefix =〜/ opt && make && make install
echo 'export PATH =〜/ opt/bin:$ {PATH}' >>〜/ .bashrc #or〜/ .profileまたは〜/ .bash_profileまたは〜/ .zshenv現在のオペレーティングシステムに応じて
これらのアプローチのいずれかを使用すると、Sudoを使用せずに以下を実行できます。
npm install -g module_to_install
私の場合、これは〜/ tmpの許可によるものです。
Sudo chown -R $USER ~/tmp
そしてそれは大丈夫です!
Sudo chown -R $(whoami) ~/.npm
があなたのために働かなかったか、またはあなたは非端末コマンド解決策を必要とします。
問題は、あなたのユーザアカウントはnode_modulesフォルダへの書き込み権限を持っていないので、あなたは次のことができるということです。
Finderを開き、cmd
+ shift
+ g
を押すと、URLのあるフォルダに移動します。
次のパス/usr/local/lib/node_modules
を書き、そしてgoを押してください。
node_modules
フォルダを右クリックしてGet Info
を選択してください
sharing & permissions
セクションまでスクロールします
変更を加えることができるようにロックを解除します。
+
を押してユーザーアカウントを追加してください
特権ドロップダウンでRead & Write
を選択していることを確認してください
これでSudo
なしでパッケージをインストールでき、パーミッションの問題は解決するはずです
私にとっては、実行のみ
Sudo chown -R $(whoami) ~/.npm
うまくいきません。それから私も実行
Sudo chown -R $(whoami) /usr/lib/node_modules/
Sudo chown -R $(whoami) /usr/bin/node
Sudo chown -R $(whoami) /usr/bin/npm
そして、すべてうまくいきました!
これは私がWindows 8.1の問題を解決した方法です:
問題: npmがグローバルパッケージやコマンドを保存するのに使うディレクトリに書き込む権限がありません。
解決策: npmに許可を与えます。
端末を開く:
command + Spaceキーを押してから 'terminal'と入力します。
次のコマンドを入力してください。
Sudo chown -R $(whoami)$(npm config get プレフィックス)/ {lib/node_modules、bin、share}
このソリューションでは、必要なディレクトリのみを許可し、他のディレクトリを素晴らしく安全に保つことができます。
_ issue _ :あなた(ユーザ)はディレクトリに対する適切な権限を持っていません。
即座の解決策はSudoを使ってnpmインストールを実行することですが、これはあなたに同じエラー、または不適切なインストールを与えるかもしれません。
また、ディレクトリの所有権を変更することは良い方法ではありません。一時的なパッチです。
解決策 / 提案 :npmのデフォルトディレクトリを変更する(official docs から)
進む前にコンピュータをバックアップしてください。
(省略可能)インストールに誤りがある場合は、まずそれをアンインストールします。
npm uninstall <package-name> # use Sudo if you used it while installation
npm cache verify # or, npm cache clean for npm version below 5.x.x
グローバルインストール用のディレクトリを作成します。
mkdir ~/.npm-global
新しいディレクトリパスを使用するようにnpmを設定します。
npm config set prefix '~/.npm-global'
~/.profile
または~/.bash_profile
ファイルを開くか作成して、次の行を追加します。
export PATH=~/.npm-global/bin:$PATH
コマンドラインに戻り、システム変数を更新するか、または端末を再起動します。
source ~/.profile
(オプション)テスト:Sudoを使わずにパッケージをグローバルにダウンロードします。
npm install -g jshint
Npmのインストール中、またはMacでパッケージをグローバルにインストールしたい場合は、以下のようなポップアップが表示されます
npm ERR!コードEACCES
npm ERR! errno -13
npm ERR!システムコールアクセス
実は私も同じ問題を抱えていました。私はUbuntuを実行していました。私の問題は、私がUbuntuの公開鍵をなくしたために起こります。私のシステムを更新しても起こらなかった。 GPGエラーが発生していました。その場合は、次のコマンドを使って鍵を取り戻すことができます。
Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key in GPG error>
その後、npmはうまく機能します。
John Papaはこの問題の背後にある歴史と推論を指摘し、 しっかりとした修正を :に与えます。
John Papaのステップは次のとおりです。
これが好奇心に役立つことを願っています!
@Yves M.の答えは私の解決策と非常によく似ていました。これが私が使ったコマンドで、彼とは少し異なっています。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
それから最新バージョンを問い合わせます。
nvm ls-remote
それから最新バージョンをインストールしてください。
nvm install YOUR_VERSION_HERE
例
nvm install v5.8.0
所有者をrootから自分のユーザー名に変更して解決します
Sudo chown -R me:me /home/me/.config/configstore/
あなたのユーザー名とグループを変えてください。
所有者を変更するのではなく、これを達成するためにubuntuグループを使用するのが好きです。それはとても簡単です。
最初にapt-getを使ってnodejsとnpmをインストールします。
Sudo apt-get update && Sudo apt-get install nodejs npm
誰がログインしているか、つまりusernameを把握し、以下のコマンドを実行してターミナルでそれを確認します。
whoami
あなたはあなたが割り当てられたグループのリストを見ることができます非常に簡単なコマンドを使って、通常最初のグループはあなた自身のユーザー名です
groups
ログインユーザーにアクセスを許可するには、以下を実行してください。
Sudo chmod 777 -R /usr/local && Sudo chgrp $(whoami) -R /usr/local
Npmとnodejsを更新する
npm install -g npm
あなたは大丈夫です、あなたのユーザはSudoなしでnpmコマンドを実行できます
また、このリンクを参照することができます https://askubuntu.com/a/1115373/687804
John Papaの記事 に続くいくつかの手順を次に示します。
インストールNode.js from nodejs.org/en/download
npm:$ npm install npm -g
の最新バージョンに更新します
npmグローバルパッケージ$ mkdir ~/.npm-packages
用の新しいフォルダーを作成します
教えてくださいnpmどこでそれらを見つける/保存するか$ npm config set prefix ~/.npm-packages
インストールを確認する
これはバージョンを表示する必要があります
node -v
npm -v
エラーなしでnpmとngが表示されるはずです
npm list -g --depth=0
それがあなたのために働くことを願って、それは私のために働いた!
ディレクトリ/usr/local/lib/npm_modules
のパーミッションを変更しても役に立たない場合、ユーザーをグループに追加する必要があります(ほとんどの場合、これは/usr/bin
ディレクトリのrwx権限を持っているstaff
グループです)。 npmは/usr/bin/__package__
でsymlink
を作成しようとするためです。
追伸ユーザーグループを変更した後に再ログインすることを忘れないでください
これが私が利用して解決した解決策です。私はwhoami
を使ってみましたが、うまくいきませんでした。
Sudo chown -R $USER /usr/local/lib/node_modules
それから
Sudo chown -R $USER /usr/local/bin/npm
それから
Sudo chown -R $USER /usr/local/bin/node
私にとって最良のオプションは npmのドキュメント で提案されているもののようです。これは最初にグローバルなnode_modulesがデフォルトでどこにインストールされているかをnpm config get prefix
を実行して確認することです。もし私がTrustyでやっているように/usr
を手に入れたのなら、私のやり方を乱すことなく安全に所有できるフォルダに変更したいかもしれません。
それには、システムに新しいフォルダを選択または作成します。私はMacユーザーでもあるので、自分のホームディレクトリに置くか、私と同じように/usr/local
の下に置くことをお勧めします(私が目の前にいるマシンによっては異なる場所を調べる必要はありません)。 。これを行うもう1つの理由は、/usr/local
フォルダーがおそらく既にPATHに入っているということです(ただし、PATHをいじらないのでない限り)が、新しく作成したフォルダーがそうではないため、追加する必要がある可能性があります。 .bash-profile または .bashrc ファイルにPATHを追加してください。
手短に言うと、グローバルモジュールのデフォルトの場所をnpm config set prefix '/usr/local'
で変更し、フォルダ/usr/local/lib/node_modules
を作成し(npmで使用されます)、npmで使用されるフォルダのアクセス権を次のコマンドで変更しました。
Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
これで、モジュールを安全にグローバルにインストールできます。お役に立てれば!
あなたはこれを試すことができます
Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
NPMを正しく構成するためのもう1つの大きな修正は、以下のコマンドを実行することです。
npm config set prefix '~/.npm_packages'
PATH=$PATH:$HOME/.npm_packages/bin; export PATH