Node 0.8.14が既にインストールされている新しいUbuntu 12.04インスタンスにノード環境をセットアップしようとしていますが、npm install
を実行しようとすると問題が発生しました。したがって、npm install
を試すと、rootまたは管理者として実行する必要があると表示されます。
Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ 'DirWriter._create (/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:297:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
ただし、Sudoとして実行しようとすると、次のように表示されます。
npm WARN cannot run in wd [email protected] npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)
私のpackage.jsonには、次のスクリプトが含まれています。
"scripts": {
"preinstall": "npm install -g coffee-script node-gyp",
"start": "node server.js",
"test": "mocha --require should --compilers coffee:coffee-script --colors"
},
残りのdevdependenciesは、自分のマシン(Mac)に問題なくインストールしているため有効です。
ここでOP、私はこの質問を最初に聞いて以来、ノードについて多くのことを学びました。 Dmitryの答えは非常に役に立ちましたが、最終的には、正しい権限でノードをインストールすることでそれができました。
パッケージマネージャーを使用してノードをインストールするのではなく、通常の権限でローカルディレクトリに存在するように自分でコンパイルすることを強くお勧めします。
この記事では、その方法をステップごとに説明します。
Npmがルート権限で呼び出された場合、uidは、
user
configで指定されたユーザーアカウントまたはuidに変更されます。デフォルトはnobody
です。unsafe-perm
フラグを設定して、root権限でスクリプトを実行します。
オプションは次のとおりです。
npm install
フラグを指定して--unsafe-perm
を実行します。
[Sudo] npm install --unsafe-perm
unsafe-perm
フラグをpackage.json
に追加します。
"config": {
"unsafe-perm":true
}
preinstall
スクリプトを使用してグローバルモジュールをインストールしないでください。それらを個別にインストールし、ルート権限なしで通常のnpm install
を実行します。
Sudo npm install -g coffee-script node-gyp
npm install
関連:
私のために働いた唯一のものは、以下を含む.npmrc
ファイルを追加することでした:
unsafe-perm = true
同じ構成をpackage.json
に追加しても効果はありませんでした。
Rootユーザーを使用してCentOsを実行しているプライベートサーバーでnodejsアプリを公開しようとすると、同じ問題が発生しました。 package.jsonファイルの "postinstall": "./node_modules/bower/bin/bower install"によって同じエラーが発生するため、私にとって機能していた唯一の解決策は、両方のオプションを使用してエラーを回避することです。
1:bower installコマンドに--allow-rootオプションを使用
"postinstall": "./node_modules/bower/bin/bower --allow-root install"
2:npm installコマンドに--unsafe-permオプションを使用します
npm install --unsafe-perm
/usr/local
および~/Users/user-name
の所有権を次のように変更することにより、これを修正しました。
Sudo chown -R my_name /usr/local
これにより、Sudo
なしですべてを行うことができました。