こんにちは。
Ubuntu Server 22.04.1に Node.js 18.12.0をインストールしたのですが、npm install で npmリポジトリからモジュールを取り込もうとすると、時間がかかった上にエラーになってしまいます。
調べたところ事例はあって IPv6でリポジトリにアクセスした際に起きる問題のようでした。
私のISPが IPv6に対応していないからかも知れないし、Ubuntu 22.04だからかも知れないし、Node.js 18だからかも知れません。
ただ上記の事例の結論は、どうやら利用者側の OSかネットワークインフラを起因にしていて、Node.js側では何をできるものでもないということのようです。
というわけで、Ubuntu Server 22.04.1 で IPv6を恒久的に無効にするようにします。
元々 IPv6を使っていないので問題は無いはずなんですがね。
やり方は GRUBで初期値を与えるのと、systemctlコマンドでやる方法の2つらしいので GRUBでやります。
こちらの海外ブログのやり方でやりました。
How to Disable IPv6 on Ubuntu 22.04 LTS Jammy Jellyfish
/etc/default/grub ファイルを以下の通り編集します。
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
↓
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
編集できたら、設定を有効化します。
subro@UbuntuServer2204:~$ sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-52-generic
Found initrd image: /boot/initrd.img-5.15.0-52-generic
Found linux image: /boot/vmlinuz-5.15.0-48-generic
Found initrd image: /boot/initrd.img-5.15.0-48-generic
Found linux image: /boot/vmlinuz-5.15.0-47-generic
Found initrd image: /boot/initrd.img-5.15.0-47-generic
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done
OSを再起動するとIPv6が使えなくなっています。
作業前後で ipコマンドの結果を取っておきました。
作業前
subro@UbuntuServer2204:~$ ip -6 address
1: lo: mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: mtu 1500 state UP qlen 1000
inet6 2408:82:a8:0:20c:29ff:fe16:2222/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 14169sec preferred_lft 12369sec
inet6 fe80::20c:29ff:fe16:2222/64 scope link
valid_lft forever preferred_lft foreve
作業後
subro@UbuntuServer2204:~$ ip -6 address
何も出なくなりました。
なお、この後 Node.jsの npm install を試した所、上手く行くようになりました。
自宅環境で遊んでいる時は、使っていない IPv6が有効になっていてもどうでも良いのですが、仕事環境で明らかに IPv6がいらないということであれば、止めておいた方が良いのかも知れませんね。
この辺はネットワークに詳しい人に聞いてみないと何とも言えませんが。