5

NFSマウントされたホームフォルダがあり、npmを介してグローバルパッケージをセットアップしようとしています。次に例を示します。

sudo npm install -g jshint

sudoではリモートサーバー上に何も作成できないため、これによりエラーが発生します(npmの外部でこれを試しました)

npm ERR! Error: EACCES, open '/home/explunit/.npm/a02a2468-jshint.lock'
npm ERR!  { [Error: EACCES, open '/home/explunit/.npm/a02a2468-jshint.lock']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/home/explunit/.npm/a02a2468-jshint.lock' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

誰かが2分以内にやって来て、「sudoを使用しないでください。実際の開発者はsudoなしでnode / npmを設定する方法を理解するでしょう!」と言うでしょうが、a)これがどのように行われるかは私にはわかりません。npm readmeがsudoを提案していることを考えると、機能するように設計されています。b)この場合、特定のユーザー(ビルドサーバー)に関連付けられたものは本当に必要ありません。

だから私は本当の問題は、npmに私のホームフォルダを無視させ、.npmに他の場所を使用させる方法だと思いますか?

4

2 に答える 2

7

これでキャッシュの場所を変更してみてください。

npm config set cache /SOMEWHERE/ELSE

/ SOMEWHERE / ELSEは、コマンドを実行しているユーザーが書き込むことができる場所にある必要があります。

于 2013-02-21T00:44:54.473 に答える
0

また、nfsマウントでnpmを実行する際に問題が発生しました。問題は、nfsマウントが実行可能ファイルにマウントされていないことでした。これは、他の場所からダウンロードされた潜在的に危険なコードの実行から保護するため、通常は保存場所に適しています。

それでも、とにかくnfsマウントからスクリプトを実行する必要がある場合があります。別のマウントポイントを使用して、実行可能ファイルをマウントすることをお勧めします。

これには、次のように到達できます。

  • マウントオプションを確認してください。
マウント| grep nfs

たとえば、次のようなnfsマウントが一覧表示されます。

デバイスマウントポイントnfs(rw、noexec、nosuid、nodev、nolock、addr = ...)
  • オプションのセクションをよく見てください。' noexec 'オプションがリストされている場合、chmodで設定したファイル権限に関係なく、そこからコードを実行することはできません。

したがって、egの代わりに'etc/fstab'内

デバイスマウントポイントnfsrw、nolock、users

使用する

デバイスマウントポイントnfsrw、nolock、exec

(「exec」オプションと「users」オプションは互いに干渉する可能性があります。必要に応じて、「mount」のマンページで正しい順序を参照してください)

于 2018-08-25T11:18:46.160 に答える