はじめに
Railsでアプリを作っていたら、途中でなぜかbundle install/updateができなくなって困りました。
下記のエラー文が出て、最初さっぱりわかりませんでした笑
しかし、stackoverflowをみて解決できたので、備忘録として残しておこうと思います。
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching source index from https://rubygems.org/
Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/
Retrying fetcher due to error (3/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/
Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/
Could not fetch specs from https://rubygems.org/
(前提、環境)
mac
macOS Mojave 10.14.5
ruby 2.5.1
rails 5.2.3
参考記事
gem cannot access rubygems.org
https://stackoverflow.com/questions/49800432/gem-cannot-access-rubygems-org
IPv6・IPv4とは? IPoE・PPPoEとは? その違いを解説
https://dream.jp/ftth/tips_f/hikari17.html
結論
rubygems.orgのIPv4アドレスをhostsに記載
vi /etc/hosts
--------------------------------------------------------
##
# HOST DATABASE
#
# localhost is used to configure loopback interface
# when the system is booting. Don't change this entry
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
## 下記を追記
151.101.128.70 rubygems.org
151.101.64.70 rubygems.org
151.101.0.70 rubygems.org
151.101.192.70 rubygems.org
試したこと
gemをアップデートしてみた。
上述のstackoverflowをみていると、gem update –systemを打ってみろ
とのことだったので、一旦コマンドを打ってみた
gem update --system
-------------------------------------------------------------------
ERROR: While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
timed out (http://api.rubygems.org/specs.4.8.gz)
わかったこと
rubygems.orgは
http://api.rubygems.org/specs.4.8.gz
というurlでアクセスしようとしている
rubygems.orgにアクセスできない?
HTTPError Could not fetch specs from https://rubygems.org/
という記述からリクエストが送れていないということかなと思い、
一旦どのようなレスポンスが返ってくるか試してみました。
wgetコマンドでリクエストを送る
wget https://api.rubygems.org/specs.4.8.gz
---------------------------------------------------------------------
api.rubygems.org (api.rubygems.org) をDNSに問いあわせています... 2a04:4e42:400::70, 2a04:4e42::70, 2a04:4e42:200::70, ...
api.rubygems.org (api.rubygems.org)|2a04:4e42:400::70|:443 に接続しています... 失敗しました: Operation timed out.
api.rubygems.org (api.rubygems.org)|2a04:4e42::70|:443 に接続しています... 失敗しました: Operation timed out.
api.rubygems.org (api.rubygems.org)|2a04:4e42:200::70|:443 に接続しています...
wgetが入っていない人は
brew install wget
で使えるようにしてください^^
わかったこと
IPv6でアクセスしようとしている?
rubygems.orgのIPv4とIPv6を確認してみる
おそらく、IPv6ではアクセスできない?ので確認コマンドを打ってみる。
host rubygems.org
--------------------------------------------------------------
rubygems.org has address 151.101.128.70
rubygems.org has address 151.101.64.70
rubygems.org has address 151.101.0.70
rubygems.org has address 151.101.192.70
rubygems.org has IPv6 address 2a04:4e42:600::70
rubygems.org has IPv6 address 2a04:4e42::70
rubygems.org has IPv6 address 2a04:4e42:400::70
rubygems.org has IPv6 address 2a04:4e42:200::70
rubygems.org mail is handled by 10 mxa.mailgun.org
わかったこと
rubygemsのIPv4のアドレスは下記の4つ
151.101.128.70
151.101.64.70
151.101.0.70
151.101.192.70
IPv4とIPv6について
下記の記事が参考になるかと思います。
IPv6・IPv4とは? IPoE・PPPoEとは? その違いを解説
https://dream.jp/ftth/tips_f/hikari17.html
要は、既存のインターネット上の住所(IPv4)が枯渇し始め、新しい住所登録(IPv6)に変更され始めているということです!
通常URL欄には載りませんし、IT系の人しか関わりはないかと思いますが笑
終わりに
今回は結構コマンドを用いてアドレスを確認してhostsに追記するなど、普段なかなか実行しないことをやったので焦りました。
bundlerが新しいバージョンになって、IPv6に対応し始めたんでしょうか?笑
普段使わないコマンドを使ったので今度Linuxのコマンドの記事でも書こうかと思います。(自分の備忘録として)