最終的には.npmrc
ファイルから prefix=/Users/midoriiriyama/.npm-global
の設定を削除したことで問題が解決しました。
やったこと
npm がどこにグローバルパッケージをインストールしているかを確認。
npm root -g
.zshrcのPATHを変更(古い記述は#でコメントアウトか削除)nanoやvimエディタで。
nano ~/.zshrc
export PATH="$HOME/.npm-global/bin:$PATH"
これで動かなかった。原因は
nvm
を使って Node.js を管理している。~/.npmrc
に入っているprefix
により、npm install -g
がnvm
管理下ではなく別の場所にインストールされ、gemini
コマンドがうまく動かなくなる。
そこで、prefix
を削除して、nvm に任せることにして。
nano ~/.npmr
下の行を削除。保存して終了(nano
なら Ctrl + O
→ Enter
→ Ctrl + X
)。
prefix=/Users/midoriiriyama/.npm-global
これで無事に動くようになりました。
何が問題だったのか?
npmがグローバルパッケージをインストールする場所が意図しないディレクトリに設定されていたためです。
prefix=/Users/midoriiriyama/.npm-global
の設定があった場合(今回):
npm はグローバルパッケージを通常とは異なるパス(この場合は/Users/midoriiriyama/.npm-global
)にインストールしようとします。もしこのパスがシステムやZshのPATH
環境変数に含まれていなかった場合、そこにインストールされたgemini
コマンドは見つけられず、「command not found」となります。prefix
を削除した場合:prefix
設定を削除することで、npmはデフォルトのグローバルインストールパスを使用するようになります。macOSの場合、これは通常/usr/local/bin
のようなディレクトリ(またはbrew
でNode.jsをインストールした場合はそれに準じたパス)になります。これらのパスは、ほとんどのシステムでデフォルトでPATH
環境変数に含まれているため、gemini
コマンドが認識されるようになったわけです。
.npmrc
に prefix
が設定されていると、グローバルパッケージのインストール場所がデフォルトから変更されるため、PATH
環境変数もそれに合わせて適切に設定しないと、今回のような問題が発生することがあります。
今後同様のケースが起こったら?
以下の点を確認すると良いです。
npm root -g
でグローバルインストールパスを確認する:
これにより、現在npmがグローバルパッケージをどこにインストールしているかがわかります。echo $PATH
でPATH
環境変数を確認する:
コマンドが実行される際に検索されるディレクトリのリストが表示されます。npm root -g
で表示されたパス、またはその親ディレクトリ(実行ファイルが格納されている場所)がこのリストに含まれているかを確認します。.npmrc
ファイルを確認する:
もし意図しないprefix
設定がある場合は、それを削除するか、PATH
環境変数に追加する必要があるかを検討します。