web-dev-qa-db-ja.com

LESSをインストールしようとすると「ルート/管理者としてこのコマンドを再度実行してください」エラーが発生する

マシンにLESSをインストールしようとしていますが、すでにノードをインストールしています。ただし、「node install -g less」と入力すると、次のエラーが表示され、何をすべきかわかりません。

FPaulMAC:bin paul$ npm install -g less
npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR!  { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/less' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 13.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! cwd /usr/local/bin
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/less
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back  { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR! error rolling back   errno: 3,
npm ERR! error rolling back   code: 'EACCES',
npm ERR! error rolling back   path: '/usr/local/lib/node_modules/less' }
npm ERR! not ok code 0
56
Stack Overflow

Re Explosion Pills「インストールは任意のスクリプトを実行でき、Sudoで実行すると非常に危険になる可能性があります!」

Sudoを使用するのは間違った方法のようです。

「/ usr/localフォルダー内のファイルの所有者を現在のユーザーに変更します。」

Sudo chown -R $USER /usr/local

次に、インストールを実行します

node install -g less

チェックアウト:

67
aturc

正直、これはnpmからの悪いアドバイスです。インストールでは任意のスクリプトを実行できますが、Sudoを使用して実行すると非常に危険です。 Sudo npm install -g lessを実行してグローバルにインストールすることもできますが、代わりにnpm設定を更新することをお勧めします。

#~/.npmrc
prefix=~/.npm_modules

その後、パスを更新できます。

#~/.bashrc or ~/.zshrc, etc.
export PATH=$PATH:$HOME/.npm_modules/bin

そうすれば、インストールを実行するのにroot権限は不要であり、引き続きバイナリを使用できます。

ただし、これはユーザーにのみ適用されます。システム全体でモジュールを使用できるようにするには、全員にパスを追加するように指示する必要があります。より複雑で堅牢なソリューションには、グループがインストールできるノードモジュール/バイナリを含むフォルダーを追加し、全員のパスにthatを追加することが含まれます。

31
Explosion Pills

コマンドの先頭にSudoを追加するだけです。前に述べたように、インストールは危険な可能性のあるスクリプトを実行しますが、グローバルにインストールすることは非常に役立ち、はるかに簡単です。

Sudo npm install -g lessを実行します

23

これは間違いなく役立ちます。 npm自体で答えます。 https://docs.npmjs.com/getting-started/fixing-npm-permissions

以下は、便宜上URLから抽出したものです。


オプション1:パーミッションをnpmのデフォルトディレクトリに変更する

  1. Npmのディレクトリへのパスを見つけます。

    npm config get prefix

多くのシステムでは、これは/ usr/localになります。

警告:表示されたパスが/ usrのみの場合、オプション2に切り替えます。そうしないと、アクセス権が台無しになります。

  1. Npmのディレクトリの所有者を現在のユーザーの名前(ユーザー名!)に変更します。

    Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

これにより、npmおよびその他のツール(lib/node_modules、bin、およびshare)によって使用されるサブフォルダーのアクセス許可が変更されます。


オプション2:npmのデフォルトディレクトリを別のディレクトリに変更する

  1. グローバルインストール用のディレクトリを作成します。

    mkdir ~/.npm-global

  2. 新しいディレクトリパスを使用するようにnpmを構成します。

    npm config set prefix '~/.npm-global'

  3. 〜/ .profileファイルを開くか作成して、次の行を追加します。

    export PATH=~/.npm-global/bin:$PATH

  4. コマンドラインに戻り、システム変数を更新します。

    source ~/.profile

テスト:Sudoを使用せずにパッケージをグローバルにダウンロードします。

`npm install -g jshint`

手順2〜4の代わりに、対応するENV変数を使用できます(たとえば、~/.profileを変更したくない場合)。

NPM_CONFIG_PREFIX=~/.npm-global


オプション3:これを処理するパッケージマネージャーを使用する

Mac OSでNodeの新規インストールを実行している場合、Homebrewパッケージマネージャーを使用して、この問題を完全に回避できます。 Homebrewは、すぐに正しい権限で設定します。

brew install node

13

Windowsがnode_modulesフォルダーを読み取り専用に設定していたため、この問題が続きました。必ずこれをオフにしてください。

enter image description here

4
Adam Hughes

これは、OPで言及されている問題を回避するためにLessコンパイラーを使用するために必要なことです。

  1. インストール node.js
  2. ターミナルでNPMをインストールします:Sudo npm install npm -g
  3. ターミナルでLessコンパイラをインストールします:Sudo npm install -g less(Sudoがすべての違いを生みます)
  4. PHPstormを使用している場合:「Preferences…> Plugins」に移動し、NodeJS-pluginをインストールします(見つけるには「リポジトリを参照」する必要があります) PHPstormを再起動します(プロンプトに従って)
  5. その後、もう一度プラグインに移動します。インストール少ないコンパイラー(それを見つけるために「リポジトリーを参照」する必要がある場合があります)
  6. プロジェクトを設定したら、[設定]> [ツール]> [ファイルウォッチャー]に移動し、[少ない]を追加します。 (「プログラム」の)パスは次のようになります:/usr/local/bin/lessc
  7. 6の設定でルートファイルのみを追跡するがチェックされていることを確認します。
1
cptstarling

私の場合、5.3.0→5.4.2からnpmバージョンを更新する必要がありました。

この-- npm i -g npmを使用する前に、2つのコマンドを実行して問題を完全に解決する必要がありました。それはあなたの問題を解決する可能性が高いです。

ステップ1:Sudo chown -R $USER /usr/local

ステップ2:npm install -g cordova ionic

この後、npmを最新バージョンに更新する必要があります

ステップ3:npm i -g npm

その後、あなたは行ってもいいです。これで問題が解決することを願っています。乾杯!!

1
Sunny Bhadani

npmには、EACCES(エラー:アクセス)エラーが発生した場合の npm権限の修正 に関する公式ページがあります。ページにはビデオもあります。

次の2つのオプションのいずれかを使用して、この問題を修正できます。

  1. パーミッションをnpmのデフォルトディレクトリに変更します。
  2. Npmのデフォルトディレクトリを別のディレクトリに変更します。
1

私にも問題がありました。これは私がやったことです:

  1. [コントロールパネル]> [プログラムのアンインストール]からnodeJをアンインストールしました
  2. Users // appData/roaming-> npmフォルダーとnpm-cacheフォルダーに2つのフォルダーがあります。これらの両方を削除します。

次に、nodeJSサイトに移動して、再度インストールします。インストールオプションの2番目のオプション(npmパッケージなど)を選択します。それをインストールします。あなたは今までに解決しなければなりません。

0
Deadpool

私はこれが古い質問であることを知っていますが、解決策はどれも良い習慣のように見えなかったので、私はこの問題をどのように解決したかを述べています:

Homebrew を使用してこの問題を解決しようとしましたが、ノードを/usr/local directoryにインストールしていたため、再びEACCESエラーが発生しました。

nvm のようなバージョンマネージャを使用する必要がありました。詳細については、公式の npmガイド を参照してください。

さまざまな オペレーティングシステム の場合。

nvmはノードとそのモジュールをユーザーのHOME FOLDERにインストールし、それによりEACCESの問題を解決します。

0
Rick