現在、私は常に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を禁止する最善の方法は何ですか?
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でも)
私の意見では、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をインストールできるようになります。
次のこともできます。
Sudo chown -R $USER /usr/local
ファイルを現在のユーザーに再帰的に変更します。
私はこれがより良い解決策であることがわかりました
Sudo chown -R $USER /Users/$USER
これにより、ユーザーの所有者があなたに変更され、OSXのユーザーの下にnpmがインストールされるはずです。私が読んでいることはすべて、npmインストールのSudoは悪いことであり、あなたが自分自身を開くときに同意する必要があります悪意のあるスクリプト。
ここで提供される2つのソリューションは、力ずくのソリューションであるため、私がお勧めするものではありません。代わりに、読むことをお勧めします 1つは単にSudo npmではありません