web-dev-qa-db-ja.com

NPMはMacにパッケージをインストールしません。新しい、クリーンなビルド。 `EACCES`とその他のエラー

Mavericks(Mac OS Xバージョン9.4)マシンを最初から再構築しました。私は管理者であり、このマシンの唯一のユーザーです。

  • git-2.0.1-intel-universal-snow-leopard.pkghttp://git-scm.com/downloads )を介してデフォルトの/usr/local/git/bin/gitの場所にGitをインストールしました。
  • Node node-v0.10.30.pkghttp://nodejs.org/download/ )を介してデフォルトの/usr/local/bin/nodeの場所にインストールしました。
  • Nodeのインストーラーパッケージの最後のステップには、デフォルトの/usr/local/bin/npmの場所にもNPMがインストールされているというメモが含まれていました。
  • 私の$PATH/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/binをエコーし​​ます(/usr/local/binが含まれています)。

npm install -g bowerを実行すると、次の結果になります。

npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/bower'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/bower']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/bower',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/bower',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR!      'Object.oncomplete (fs.js:107:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 13.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "bower"
npm ERR! cwd /Users/Home
npm ERR! node -v v0.10.30
npm ERR! npm -v 1.4.21
npm ERR! path /usr/local/lib/node_modules/bower
npm ERR! fstream_path /usr/local/lib/node_modules/bower
npm ERR! fstream_type Directory
npm ERR! fstream_class DirWriter
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/bower'
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53
npm ERR! fstream_stack Object.oncomplete (fs.js:107:15)
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/Home/npm-debug.log
npm ERR! not ok code 0

同様のインストール(npm install -g yonpm install -g gruntnpm install -g nvmnpm install -g npm)を実行すると、同じエラーのリストのように見えます。

オンラインの何人かの人々はSudoを介してインストールを強制することを提案していますが、他の何人かはこれが後で問題を引き起こす可能性があると警告しています。これらのパッケージのマニュアルには、Sudoの要件が記載されていないようであり、場合によっては、この問題が発生したときにNPMに連絡するようにアドバイスされています。

npm cache clearを実行しても、問題は修正されません。

ホーム(ls -la)ディレクトリで~を実行すると、Mac OSXのユーザー名が.npmディレクトリの所有者として表示されます:drwxr-xr-x 15 admin staff 510 Aug 11 23:53 .npm

誰が何が間違っていて、これを修正する方法を知っていますか?ありがとうございました。

13
jtheletter

ちなみに、この問題を解決するには、/usr/localの所有者を自分自身に変更して、各パッケージのインストールにSudoを追加することなく、NPMがデフォルトの場所にあるモジュールを使用できるようにしました。

Sudo chown -R `whoami` /usr/local
14
jtheletter

EACCESは、操作の実行にアクセスできないというエラーです。

行を取りました:npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/bower'npmが指定された場所にディレクトリを作成できなかったことがわかります。

その理由は、スーパーユーザーとしてコマンドを実行していない可能性が非常に高いです。実際、エラーログは次のことも示唆しています。

npm ERR! root/Administratorとしてこのコマンドをもう一度実行してください。

管理者として実行するには、これらのコマンドの前にSudoを付ける必要があります。あれは:

Sudo npm install -g bower。セキュリティ上の理由から、パスワードを入力する必要があります。

8
alandarev

nvm などのバージョンマネージャーを使用してNode.jsをインストールすることをお勧めします。このようにして、1つの石で2羽の鳥を殺します。

  • まず、同じマシンでNode.jsの複数のバージョンを管理できます(これは、遅かれ早かれやりたいことです)。
  • 次に、Node.jsをインストールせずにインストールしたときに発生するすべてのアクセスの問題を回避します。少なくともそれは私の経験です。

基本的には走るのと同じくらい簡単です

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.24.1/install.sh | bash

コマンドラインから。

0
Golo Roden

どうしても必要な場合を除いて、通常はSudoを実行することはお勧めしません。

このような問題の場合、 [〜#〜] npm [〜#〜] は多くの問題を解決し、複数のノードバージョンを使用できるようにし、ユースケースに応じて選択します。

新しいマシンのセットアップでも同様の問題が発生し、NPMをインストールすることで問題が解決しました。

0
karolus

新たに開始するには、以前のnode.jsとnpmのインストール、およびこれらを削除します。

〜/ .npmrc〜/.npm〜/tmp〜/.npm-init.js

nodejsとnpmをrootではなく自分でインストールするには、次のコマンドを実行します(linux):

mkdir ${HOME}/bin

ソースをダウンロード: http://nodejs.org/download/

cd v0.10.30/

./configure   --prefix=${HOME}/bin/nodejs

make -j8
make install

上記で定義されたディレクトリに配置します--prefix

export PATH=${HOME}/bin/nodejs/bin:$PATH

NODE_PATHにより、ノードはモジュールのdirを見つけることができます。そうでない場合、npm installxxxは新しくインストールされたモジュールをcurrdirのdirに配置します。

export NODE_PATH=${HOME}/bin/nodejs/lib/node_modules

上記を実行し、構文を使用します:npm install xxxxx-g常にグローバルに-gを使用します

nodejs installはnpmも提供します:

ls -la ${HOME}/bin/nodejs/bin
0
Scott Stensland

(解決策の答え)

こんにちは、みんな、

MacBook Pro 2018でも同じ問題が発生しました。依存関係をグローバルに(「-g」または「--global」で)インストールしようとすると、「EACCES」エラーが発生しました(権限に関するものです)。

コマンドの前に「Sudo」を追加するだけでかまいません強制するもの。

例えば:

Sudo npm install gulp -g

または

Sudo npm install browser-sync -g

楽しい!

0
Adam Šipický