WSLのnpm install -gが権限エラーEACCESで失敗する場合の対処法
/ 5 min read
Table of Contents
はじめに
npmを使ってグローバルにパッケージをインストールしようとしたとき、以下のようなエラーに遭遇したことはありませんか? 私はWindows11のWSL2に作ったUbuntuにClaude Codeをグローバルインストールしようとして、まんまとハマりました。
npm error Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/…'
このエラーは、システム全体のディレクトリ(例:/usr/local/lib/node_modules)に対する書き込み権限が不足しているために発生します。 この記事では、グローバルインストール先をユーザー領域に変更する方法を中心に、この問題の解決手順を詳しく解説します。
なぜ権限エラーが発生するのか?
npmはデフォルトではグローバルパッケージをシステムディレクトリにインストールします。
しかし、これらのディレクトリは管理者権限(sudo)が必要なため、通常のユーザーでは書き込みができません。
もちろんsudo
を使ってインストールする方法もありますが、セキュリティ面や将来的な管理のしやすさから、ユーザー領域に変更する方法がおすすめです。
対処法
手順 1: 新しいディレクトリを作成する
まず、npmのグローバルインストール先として使うディレクトリを作成します。ここでは例として~/.npm-global
を使用します。
$ mkdir ~/.npm-global
このディレクトリは、あなたのホームディレクトリ内に作成されるため、書き込み権限の問題が発生しません。
手順 2: npm のグローバルインストール先を変更する
次に、npmに対して新しいディレクトリをグローバルインストール先として設定します。
$ npm config set prefix '~/.npm-global'
このコマンドを実行することで、npmは今後グローバルパッケージを~/.npm-global
内にインストールするようになります。
手順 3: 環境変数 PATH を更新する
新しいディレクトリの実行ファイルをシェルから認識させるため、環境変数 PATH に~/.npm-global/bin
を追加する必要があります。
設定方法は、ログインシェル全体に反映させたい場合は~/.profile
への記述が推奨されます。
~/.profile
を開く
$ vim ~/.profile
- PATHの設定を追加 ファイルの末尾に以下の行を追加してください。
$ export PATH=~/.npm-global/bin:$PATH
- 設定を反映する シェルを再起動するか、以下のコマンドで設定を再読み込みします。
$ source ~/.profile
これで、新しくインストールしたnpmパッケージの実行ファイルが正しくPATHに追加され、 コマンドラインから実行できるようになります。
手順 4: 動作確認
設定が正しく行われたかどうかを確認するため、例えば npmパッケージをグローバルにインストールしてみましょう。
$ npm install -g <パッケージ名>
エラーが発生せずにインストールできれば、設定は成功です。
まとめ
npmのグローバルパッケージインストール時に発生する権限エラー(EACCES)は、システムディレクトリへの書き込み権限が原因ですが、 今回ご紹介したように、ユーザー領域にインストール先を変更することで解決できます。
- ユーザー専用ディレクトリ
~/.npm-global
を作成 npm config set prefix '~/.npm-global'
を実行~/.profile
にexport PATH=~/.npm-global/bin:$PATH
を追加してシェルを再読み込み
これにより、sudo
を使用せずに安全かつ簡単に npm のグローバルパッケージを管理できるようになります。