web-dev-qa-db-ja.com

npmコマンド-Sudoかどうか?

現在、私は常にSudo npm install <package-name>を実行していますが、私が理解しているように、それは正しくありません。

Root /管理者として使用しない機会が欲しいです。私はいくつかのアドバイスに従い、このコマンドSudo chown -R <username> ~/.npmを使用しましたが、機能しません...

たとえば、それは私のnpm install jadeの出力です

...
npm http 200 https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm http 200 https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm ERR! Error: EACCES, symlink '../jade/bin/jade'
npm ERR!  { [Error: EACCES, symlink '../jade/bin/jade'] errno: 3, code: 'EACCES', path: '../jade/bin/jade' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

ご覧のとおり、ダウンロードは正常に開始されましたが、失敗しました。

NpmでSudoを禁止する最善の方法は何ですか?

24
Kosmetika

Sudoなしでnpm install -gノードモジュールを使用することは可能です(そしてお勧めします)。

/usr/local/share/npm/binフォルダの権限を確認してください。 brew(Sudoなし)を介してnodeとnpmをインストールしましたが、その特定のフォルダーは最終的にrootによって所有されていました。

これにより、これが完全に修正されました。

$ Sudo chown $(whoami) /usr/local/share/npm/bin

(npmでSudoを禁止する場合:そのためにnpmを微調整する必要があります。独自のノードコードで使用できます https://npmjs.org/package/Sudo-block =、npm install Sudo-block

EDIT:これは機能しますが、-gは使用しなくなりました。代わりにプレフィックスを使用するか(次の回答を参照)、またはNIXを使用することをお勧めします https://unix.stackexchange.com/a/381797 (OSXでも)

15
lionello

私の意見では、npmプレフィックスを指定する最もクリーンな方法は次のとおりです。

npm config set prefix ~/.node_modules

そして、あなたに以下を追加するには.bash_profile

export PATH=$HOME/.node_modules/bin:$PATH

これで、パッケージがユーザーディレクトリにインストールされ、権限が損なわれることはありません。


編集:インストールできない場合yeoman PATHディレクトリの1つにyodoctorという名前のbashファイルを次の内容で作成します

#!/bin/bash
yo doctor

ファイルを実行可能にする

chmod +x yodoctor

これで、yeomanをインストールできるようになります。

14
febLey

次のこともできます。

Sudo chown -R $USER /usr/local

ファイルを現在のユーザーに再帰的に変更します。

2
Artimus

私はこれがより良い解決策であることがわかりました

Sudo chown -R $USER /Users/$USER

これにより、ユーザーの所有者があなたに変更され、OSXのユーザーの下にnpmがインストールされるはずです。私が読んでいることはすべて、npmインストールのSudoは悪いことであり、あなたが自分自身を開くときに同意する必要があります悪意のあるスクリプト。

1
E-comm

ここで提供される2つのソリューションは、力ずくのソリューションであるため、私がお勧めするものではありません。代わりに、読むことをお勧めします 1つは単にSudo npmではありません

0
bsnyder