Ubuntuでnvmを使ったnodeのversion管理
過去のブログ「初めてのプログラミング学習」でnode.jsの公式サイトから圧縮ファイルをダウンロードして、適当なフォルダで解凍する方法を紹介しました。
この方法がダメという訳でもないですが、最近は nvm(Node Version Manager) を使う方法が主流みたいで、過去のブログ記事の修正の意味も込めてご紹介します。これにより開発効率と保守性の大幅な改善が期待できます。
ここではUbuntu 22.04を例に紹介しますが、Debian Linux 12でも同様な方法で可能です。
目次
nvmのメリット
- 複数バージョンの切り替えが簡単
プロジェクトごとに必要なNode.jsのバージョンを変えたい時でも簡単にできる。
nvm user <version>で簡単に切り替えられる。これは便利! - グローバル環境を汚さない
nvmはユーザーのホームディレクトリ内で完結する。手動インストールだと グローバル環境(/usr/local/bin)に直接入るから、他のツールと競合しやすいというデメリットがない。 - LTSや最新安定版のインストールが簡単
nvm install <version>で簡単にインストールできる。 - npmも自動で連動する
node.jsのバージョンを切り替えると、それに対応したnpmも一緒に切り替わる。素晴らしいですね。👏
グローバルでインストールしたnodeを削除する
まず、新たにインストールする前に、過去にインストールしたnode.jsを削除しないと、nvmの動作やバージョン切り替えに干渉する可能性がありますので、削除するところから始めます。
実行ファイルの場所確認と削除方法
node -v
v22.13.1
npm -v
11.3.0
which node
/opt/node-v22.13.1/bin/nodeこれは、Node.js の公式サイトからダウンロードしたバイナリを手動で /optディレクトリに展開しただけなので、フォルダ毎削除すればOKです。...①
パス設定していれば、該当部分を削除するかコメントアウトしてから、以下のコマンドを実行してください。...②
# ①フォルダ毎削除
sudo rm -rf /opt/node-v22.13.1
# ②(.bashrcか.zshrcに)パス指定していると思うので、削除します。
sudo vim .bashrc
# --ファイルの中身抜粋 --
PATH="/home/tatsumi/.local/bin:
/opt/node-v22.13.1/bin: ←これを削除する
/usr/local/sbin:..省略.."
# -- :wqで保存して抜ける --
# 最後に、source ~/.bashrcを実行する。
source ~/.bashrc
他に無いか確認すると、version 18が残っていました。
さらに確認と他にあればこれも削除
node -v
v18.17.1 # まだ残っている
# aptでインストールしたのか、覚えていない。
which node
/usr/local/bin/node
# ディレクトリを探す→フォルダに移動して、list表示で確認する。
pwd
/usr/local/bin
ls -al
lrwxrwxrwx 1 root root 27 8月 12 2021 n -> ../lib/node_modules/n/bin/n
-rwxr-xr-x 1 root root 92150296 9月 9 2023 node
これらも削除します。
# 削除
sudo rm /usr/local/bin/n
sudo rm /usr/local/bin/node
# リンク先も削除
sudo rm /usr/local/lib/node_modules/n/bin/n
# 確認
node -v
bash: /usr/local/bin/node: そのようなファイルやディレクトリはありません
npm -v
/usr/bin/env: `node': そのようなファイルやディレクトリはありませんnvmのインストール
Ubuntu 22.04にnode.jsの公式サイトからnvmをインストールします。
nvmインストールとnode-versionのインストール実行結果
# ホームに移動して
# install
sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
# ..中略..
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# 指示通りに行う
# ①
export NVM_DIR="$HOME/.nvm"
# ②
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# ③
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
# 最後にインストールされたか確認する
nvm -v
0.40.3
# install
nvm install 24.11.0
nvm install 22.21.1node.jsのVersionを簡単に切り替える2つの方法
一時的に切り替える
nvm use <version>で切り替え可能。但しこれは一時的な切り替えで、ターミナルを閉じるだけで、もとのdefault versionに戻ります。
# install versionを確認
nvm ls
-> v22.21.1
v24.11.0
default -> 22.21.1 (-> v22.21.1)
node -v
v22.21.1
npm -v
10.9.4
# ここで切り替える
nvm use 24.11.0
Now using node v24.11.0 (npm v11.6.1)
node -v
v24.11.0 # 切り替えられた!!
# ターミナルを閉じて、別のターミナルで確認すると、defaultのv22.21.1に戻っていました。
# これが正常な動作ですので、安心してください。
node -v
v22.21.1
nvm ls
-> v22.21.1
v24.11.0
default -> 22.21.1 (-> v22.21.1)
永続的に切り替える
nvm alias default <version> で行います。別のターミナルを開いて
nvm ls
-> v22.21.1
v24.11.0
default -> 22.21.1 (-> v22.21.1)
# これで新しいターミナルを開いたときに自動的に22.21.1に切り替わるので、
# 永続的に切り替えるために、下記のコマンドを実行します。
nvm alias default 24.11.0
# 別のターミナルを開いて確認すると、24.11.0に固定されています。
node -v
v24.11.0
nvm ls
v22.21.1
-> v24.11.0
default -> 24.11.0 (-> v24.11.0)
# 何度でも上書きできるので、再度変更すると。
nvm alias default 22.21.1
default -> 22.21.1 (-> v22.21.1)
nvm use 22.21.1
Now using node v22.21.1 (npm v10.9.4)
# 同じターミナルで確認しても v22.21.1に変更
node -v
v22.21.1
# ここでターミナルを閉じて、別のターミナルを開いて確認すると、同じv22.21.1のままでした。
node -v
v22.21.1
削除する方法
これも簡単で、nvm uninstall <version> で不要なバージョンを削除できる!!
# 例えば
nvm uninstall 20.19.5 npmのみアップグレードする
nvmではNode.jsのバージョンに紐づいてnpmも一緒にインストールされますので、npmのみUpgradeするのは稀かもんしれませんが、npm単体のバージョンだけをアップグレードしたい場合は、以下のように手動で行う必要があります。
npmだけをアップグレードするコマンド
npm install -g npm@latest現在アクティブなNode.jsバージョンに紐づくnpmだけが更新されます。
ここで、オプションの -g はglobalのgなので、グローバル環境に影響されると思ってしまいますが、現在アクティブな Node.js バージョンの環境内でグローバルという意味です。
今Node.jsはnvmで管理していますので、切り替えたNode.js環境内でグローバルに影響しますが、他のNode.jsバージョンには影響しません。
⇨ これでnode.jsのバージョンの違いで動作しないアプリがあっても、グローバル環境を汚さずに、安心して対応できますので、とても便利です。😀
以上です。
