🎉
【Ruby】gem のインストールの際に IPv4 のフォールバックを設定する
自宅の光回線で gem をインストールしようとしたところ、ネットワークのタイムアウトエラーに遭遇した。いろいろ調べた結果、~/.gemrc
に :ipv4_fallback_enabled: true
を追加することでインストールできるようになった
echo ":ipv4_fallback_enabled: true" >> ~/.gemrc
~/.gemrc
の設定項目は Gem::ConfigFile
のマニュアルに記載されている。Gem::ConfigFile は lib/rubygems/config_file.rb
で定義されている。
ほかの方法として /etc/gai.conf
を編集して api.rubygems.org の IPv6 の優先順位を下げる方法もあるそうだ。具体的な設定ファイルの例は stackoverflow の回答に記載されている。
IPv6 のアドレスを調べるには dig
や nslookup
を使う。Debian であれば次のコマンドでインストールできる
sudo apt install dnsutils
次のコマンドで IPv6 のアドレスを調べてみる
dig AAAA rubygems.org +short
rubygems.org
2a04:4e42:200::483
2a04:4e42::483
2a04:4e42:400::483
2a04:4e42:600::483
ネームサーバーを指定することもできる
dig AAAA @8.8.8.8 rubygems.org +short
Ruby 3.4 では Socket モジュールは Happy Eyeballs Version 2 (RFC8305) に対応するという[1]。IPv6 と IPv4 の両方で問い合わせをして応答の速かったほうが採用されるという
Discussion