これは、なにをしたくて書いたもの?
今までNode.jsのインストールにはnvmを使っていたのですが、手元では基本的には最新版しか使わないですし、バージョン自体を
切り替えることもそれほどないのでOSのパッケージマネージャーでのインストールに切り替えたいなと思いまして。
そういう方法はあるのかな?と思ったら、ふつうにNode.jsのダウンロードページ内に「Installing Node.js via package manager」と
記載があるのに気づいていませんでした。
今回はこちらを使うことにしましょう。
なお結論を先に書くと、今回記載する方法では複数バージョンのNode.jsはインストールできないので、複数バージョンのNode.jsを
混在させたい場合はnvmやasdfなどを使った方がよいでしょう。
Node.jsをOSのパッケージマネージャーからインストールする
Node.jsをOSのパッケージマネージャーからインストールする場合は、こちらのページを見ます。
Installing Node.js via package manager | Node.js
注意点としては、このページに記載されているパッケージはNode.jsのコアチームによるものではないということですね。
Note: The packages on this page are maintained and supported by their respective packagers, not the Node.js core team.
DebianおよびUbuntuベースのLinuxディストリビューションの場合、NodeSourceによるパッケージを使用します。
Installing Node.js via package manager / Debian and Ubuntu based Linux distributions
こちらですね。
GitHub - nodesource/distributions: NodeSource Node.js Binary Distributions
「Installing Node.js via package manager」のページにはCentOS、Fedora、Red Hat Enterprise Linuxに関するインストール方法も
あったのですが、NodeSourceではこれらを含め以下のLinuxディストリビューションに対するインストール方法を提供しています。
- DebianおよびUbuntuベースのディストリビューション
- Enterprise Linuxベースのディストリビューション
- Red Hat Enterprise Linux
- CentOS
- AlmaLinux
- Mageia
- Rocky
- CloudLinux
- Fedora
- Amazon Linux
ディストリビューションの名前だけでなく対象のバージョンも書かれているのですが、Node.jsのバージョンによっては対象外にされて
いたりするものもあるので1度確認しましょう。
また、現時点でインストール可能なNode.jsは、16(LTS)、18(LTS)、19、20(2023年10月以降LTS)です。
今回はUbuntu LinuxでNode.js 18をインストールすることにします。
- インストール方法
- アンインストール方法
- 手動インストール方法
アンインストール方法や手動でのインストール方法を見るとわかりますが(というか想像に難くないですが)、実態はPPAということに
なります。
それでは、使っていってみましょう。
環境
今回の環境は、こちら。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy $ uname -srvmpio Linux 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
NodeSourceを使ってNode.js 18をインストールする
やることは単純で、以下のコマンドを実行すればOKです。
$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ sudo apt-get install -y nodejs
Node.js 18のインストールが完了しました。
$ node --version v18.16.0 $ npm --version 9.5.1
アンインストールする場合はこちら。
$ sudo apt-get purge -y nodejs &&\ sudo rm -r /etc/apt/sources.list.d/nodesource.list
Node.jsがどこにインストールされたのか確認してみましょう。
$ dpkg -L nodejs | grep -E '(node|npm)$' /usr/bin/node /usr/lib/node_modules/corepack/shims/nodewin/npm /usr/lib/node_modules/corepack/shims/nodewin/pnpm /usr/lib/node_modules/corepack/shims/npm /usr/lib/node_modules/corepack/shims/pnpm /usr/lib/node_modules/npm /usr/lib/node_modules/npm/bin/npm /usr/lib/node_modules/npm/docs/output/configuring-npm /usr/lib/node_modules/npm/docs/output/using-npm /usr/include/node /usr/share/doc/node /usr/bin/npm
/usr/bin
や/usr/lib
の配下にそのまま入るんですね…バージョンごとにディレクトリ管理されていたりするのかなと思っていました…。
$ ls -l $(which node) -rwxr-xr-x 1 root root 90940576 4月 12 14:31 /usr/bin/node $ ls -l $(which npm) lrwxrwxrwx 1 root root 38 4月 13 22:35 /usr/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
追加でNode.js 16をインストールしてみる
先程の結果からなんとく予想は付きますが、Node.js 18をインストールした状態でNode.js 16のインストールを試みます。
$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - &&\ sudo apt-get install -y nodejs
PPAの定義場所としてもパスが重複するので、Node.js 18をインストールした時の情報が失われますね…。
## Creating apt sources list file for the NodeSource Node.js 16.x repo... + echo 'deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x jammy main' > /etc/apt/sources.list.d/nodesource.list + echo 'deb-src [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x jammy main' >> /etc/apt/sources.list.d/nodesource.list
Node.jsもインストール済み扱いになっています。
nodejs はすでに最新バージョン (18.16.0-deb-1nodesource1) です。
というわけで、ふつうにやるとNodeSourceからインストールを行う場合はいずれかのバージョンを選択することになるかなと。
覚えておきましょう。
その気になれば/etc/apt/sources.list.d
配下に各バージョンのPPAの定義を作れますし、そうするとインストールするNode.jsの
バージョンの選択は可能になるのですが。結局インストール先のパスが同じなので、共存はできません。
まとめ
NodeSourceのPPAからNode.jsをインストールしてみました。
導入自体は簡単なのですが、複数バージョンをインストールできないのが難点かなとは思いました…。
各メジャーバージョンの最新版でいいので、複数入れられるようにしたかったところですが…仕方ありません。
複数のバージョンを扱いたい場合は、nvm等に頼ることになりそうです。