skip to content
barorin&?

WSLのnpm install -gが権限エラーEACCESで失敗する場合の対処法

/ 5 min read

Table of Contents

はじめに

npmを使ってグローバルにパッケージをインストールしようとしたとき、以下のようなエラーに遭遇したことはありませんか? 私はWindows11のWSL2に作ったUbuntuにClaude Codeをグローバルインストールしようとして、まんまとハマりました。

Terminal window
npm error Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/…'

このエラーは、システム全体のディレクトリ(例:/usr/local/lib/node_modules)に対する書き込み権限が不足しているために発生します。 この記事では、グローバルインストール先をユーザー領域に変更する方法を中心に、この問題の解決手順を詳しく解説します。

なぜ権限エラーが発生するのか?

npmはデフォルトではグローバルパッケージをシステムディレクトリにインストールします。 しかし、これらのディレクトリは管理者権限(sudo)が必要なため、通常のユーザーでは書き込みができません。 もちろんsudoを使ってインストールする方法もありますが、セキュリティ面や将来的な管理のしやすさから、ユーザー領域に変更する方法がおすすめです。

対処法

手順 1: 新しいディレクトリを作成する

まず、npmのグローバルインストール先として使うディレクトリを作成します。ここでは例として~/.npm-globalを使用します。

Terminal window
$ mkdir ~/.npm-global

このディレクトリは、あなたのホームディレクトリ内に作成されるため、書き込み権限の問題が発生しません。

手順 2: npm のグローバルインストール先を変更する

次に、npmに対して新しいディレクトリをグローバルインストール先として設定します。

Terminal window
$ npm config set prefix '~/.npm-global'

このコマンドを実行することで、npmは今後グローバルパッケージを~/.npm-global内にインストールするようになります。

手順 3: 環境変数 PATH を更新する

新しいディレクトリの実行ファイルをシェルから認識させるため、環境変数 PATH に~/.npm-global/binを追加する必要があります。 設定方法は、ログインシェル全体に反映させたい場合は~/.profileへの記述が推奨されます。

  1. ~/.profileを開く
Terminal window
$ vim ~/.profile
  1. PATHの設定を追加 ファイルの末尾に以下の行を追加してください。
Terminal window
$ export PATH=~/.npm-global/bin:$PATH
  1. 設定を反映する シェルを再起動するか、以下のコマンドで設定を再読み込みします。
Terminal window
$ source ~/.profile

これで、新しくインストールしたnpmパッケージの実行ファイルが正しくPATHに追加され、 コマンドラインから実行できるようになります。

手順 4: 動作確認

設定が正しく行われたかどうかを確認するため、例えば npmパッケージをグローバルにインストールしてみましょう。

Terminal window
$ npm install -g <パッケージ名>

エラーが発生せずにインストールできれば、設定は成功です。

まとめ

npmのグローバルパッケージインストール時に発生する権限エラー(EACCES)は、システムディレクトリへの書き込み権限が原因ですが、 今回ご紹介したように、ユーザー領域にインストール先を変更することで解決できます。

  1. ユーザー専用ディレクトリ~/.npm-globalを作成
  2. npm config set prefix '~/.npm-global'を実行
  3. ~/.profileexport PATH=~/.npm-global/bin:$PATHを追加してシェルを再読み込み

これにより、sudoを使用せずに安全かつ簡単に npm のグローバルパッケージを管理できるようになります。