73

sudo なしでYo ( Yoeman )を使用して generator-angularjs をインストールしようとしました:

npm install -g generator-angular

私は得る:

Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'

と入力するとsudo yo、yo は sudo を使用しないように指示します (これは完全に理解できます)。

ディレクトリが~/node_modulesあります。そこにパッケージをインストールしないのはなぜですか?

4

6 に答える 6

173

ジェネレーターは、グローバルにインストールされるように設計されています。そうしないと、各プロジェクトで使用しようとしているジェネレーターを常にインストールする必要があり、これは不必要に苦痛です。また、利用可能なすべてのジェネレーターを一覧表示する素敵なyoメニューも表示されません (もちろん、それらをすべてローカルにインストールしない限り)。

よ

グローバル インストール用の npm のセットアップ

では、npm にパッケージをグローバルにインストールさせるにはどうすればよいでしょうか。あなたが正しく言ったように、決してyosudo で実行してはいけません。この問題にはさまざまな解決策があり、それらの長所と短所を宗教的に議論するのに何時間も費やすことができます.

個人的には、ユーザーパッケージをグローバル /usr/フォルダーにインストールするのは好きではありません。/usr/コンピューター上のすべてのユーザー間で共有されるソフトウェア用です。マシンのみを使用している場合でも、Unix ファイル システム階層の設計方法を尊重する十分な理由があります。たとえば、ある時点でノードのインストール全体を消去することを決定した場合。

中断せずにnpmパッケージをグローバルにインストールできるようにする私の推奨方法は、ローカル ノード プレフィックスを設定することです。これは実行するのと同じくらい簡単です$HOME

echo 'prefix = ~/.node' >> ~/.npmrc

ローカルシェルで。その後、お気に入りのシェルの構成を調整して、$PATH を調整し、グローバル ノード実行可能ファイルの新しいインストール先を指すようにします。たとえば、追加することによって

export PATH="$PATH:$HOME/.node/bin"

あなたに~/.bashrc。その後、npm install -g generator-angularsudo なしで、パーミッションの競合に遭遇することなく問題なく実行できます。また、何かが完全に壊れていて、最初からやり直したい場合は、~/.nodeディレクトリを削除するだけで済みます。

于 2013-08-16T15:41:29.923 に答える
27

@passy のおかげで、最終的に ubuntu 13.04 でこれを機能させることができました (誰かが同様のセットアップの問題を抱えている場合)。

sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

実行しようとしています:

npm install -g yo

をもたらしました

Error: EACCES, mkdir '/usr/lib/node_modules/yo'

以下を使用して修正:

echo prefix = ~/.node >> ~/.npmrc
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc 
. ~/.bashrc

ランニング:

yo webapp

をもたらしました:

Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml'

以下を使用して修正:

sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml
于 2013-10-15T11:12:11.247 に答える
0

yoeman の開始ページから次のコマンドが表示されます。

yo doctor

私の場合、 $NODE_PATH (私の場合、Ubuntu 14.04 は /etc/profile.d で定義されています) は npm ルートと同じではありません。$NODE_PATH に npm root を追加すると問題が解決します。

于 2016-02-27T19:38:28.980 に答える