覚書です。
Contents
【Macエラー】npm error Error: EACCES: permission denied, mkdir
このエラーは、Macの環境でnpm
を使ってパッケージをグローバルにインストールしようとした際によく発生する「権限(パーミッション)」の問題です。
npm error EACCES permission denied mkdir /usr/local/lib/node_modules
vivliostyleインストール時に問題が発生しましたが、他で発生する可能性もあるでしょう。
npm error code EACCES
npm error syscall mkdir
npm error path /usr/local/lib/node_modules/@vivliostyle
npm error errno -13
npm error Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/@vivliostyle'
問題の原因
- Macでは、
npm install -g
を使ってパッケージをグローバルにインストールする場合、通常システムの一部である/usr/local/lib
フォルダなどにパッケージがインストールされます。 - しかし、このシステムのフォルダはユーザーが自由に書き込める場所ではなく、管理者権限が必要です。したがって、
npm
がインストールしようとしたときに「権限がない」というエラーが発生します。- 具体的には、
Error: EACCES: permission denied
というエラーが出ていて、これは「ファイルやフォルダへのアクセス権限がない」という意味です。
- 具体的には、
解決方法
この問題を解決するためには、npm
がパッケージをインストールする場所を、システムフォルダではなく、自分のユーザーディレクトリ(ホームフォルダ)内のフォルダに変更するのが一番簡単で安全な方法です。
手順
- グローバルインストール先を自分のユーザーディレクトリに変更する
- システムのフォルダではなく、自分のホームフォルダ内に
npm
のグローバルインストール先を設定します。これにより、権限の問題が発生しなくなります。
mkdir -p ~/.npm-global npm config set prefix '~/.npm-global'
- システムのフォルダではなく、自分のホームフォルダ内に
- 環境変数
PATH
を更新する- 上記で作成したフォルダにインストールしたパッケージをシステムが見つけられるように、
PATH
という環境変数を更新する必要があります。 - これを行うには、
.zshrc
という設定ファイルにPATH
の設定を追加します。
~/.zshrc
ファイルに次の行を追加します:bashコードをコピーするexport PATH=~/.npm-global/bin:$PATH
- 上記で作成したフォルダにインストールしたパッケージをシステムが見つけられるように、
- 設定を反映させる
- 追加した設定を反映するために、次のコマンドを実行します:
source ~/.zshrc
- 再インストール
- 最後に、もう一度パッケージをインストールします。
sudo
を使わずに、npm install -g @vivliostyle/cli
を実行できるようになります。
- 最後に、もう一度パッケージをインストールします。
なぜこの方法が安全か?
sudo
を使わない:sudo
を使ってシステムに直接パッケージをインストールすることは、誤ってシステムを壊したり、セキュリティリスクを高めたりする可能性があります。ホームフォルダにインストールすることで、システムに影響を与えることなくパッケージを管理できます。
実際の作業
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
ディレクトリ作事を確認します。
ls -ld ~/.npm-global
現在使用しているシェルを確認します。
echo $SHELL
今回、次のように表示されました。
/bin/zsh
~/.zshrc
ファイルを開く ターミナルで次のコマンドを実行して、設定ファイルをテキストエディタで開きます。
nano ~/.zshrc
PATH
の設定を追加 ファイルの一番下に、次の行を追加します。
export PATH=~/.npm-global/bin:$PATH
ファイルを保存して閉じる nano
エディタでファイルを保存し、閉じます。
Ctrl + O
(保存)Enter
(確認)Ctrl + X
(エディタを閉じる)
設定を反映させる 以下のコマンドを実行して、追加した設定を反映させます。
source ~/.zshrc
npm install
の再実行 設定が反映されたら、再度以下のコマンドで vivliostyle
をインストールします。インストールするものは状況により変わると思うので、対応ください。
npm install -g @vivliostyle/cli
参考文献
お世話になった大変ありがたい記事です。
Error: EACCES: permission denied, mkdir when installing sth with npm
Everytime I try to install something with npm (in this case electron-packager) I run into this error. How can I solve this issue? I have already tried to give m…
Resolving EACCES permissions errors when installing packages globally | npm Docs
Documentation for the npm registry, website, and command-line interface
コメント