備忘録です。
$ gem install rabbit
Installing required msys2 packages: mingw-w64-x86_64-gr
Windowsでgem installすると、こんな感じで msys2 関連パッケージをインストールしようとして、うまくいかずに色んなミラーサイトを探し回り、たらいまわしを受けることがあります(エラーメッセージを採取し忘れました)。
最近頻発してたんで、「WindowsとRubyってそんなに相性悪いの?」としょぼんとしていたところ、解決策らしきものが見つかったので置いておきます。
##原因はもしかして
pacmanという「パッケージマネージャ」の情報が古い
##御託は後。まずは解決策
-
エクスプローラーでRubyをインストールしたフォルダへ
- だいたいC直下のはず。Ruby30-x64とかの名前になってる
-
さらに、フォルダ msys64 に入る
- msys32とかの場合もあるかも
-
msys2.exeを起動
-
以下のコマンドを打ってパッケージマネージャの情報を更新
pacman -Syu
- 実行中、Y/n選択形式で色々聞かれるので、全部 Y [Enterキー]を入力
- すべてのパッケージを更新できずに途中でエラーになるかもしれないが、それでもgem installには支障なかったりするので、めげずに次に進む
- 同じフォルダにmingw32.exeやmingw64.exeというものも見当たるので、それらについても起動し、pacman -Syu を実行する
- 終了したら、通常のコマンドプロンプトに戻ってgem installし直してみる
私の場合はこれでインストールがはかどるようになりました。
##あとはおまけ:msys2 とpacmanについてざっくり
今までよく分からず避けていたので自分なりにまとめ。
###msys2 = WindowsでUnixシェルを実行できるターミナル
Windowsだと動かないコマンドが沢山あるので、それを使えるようにするもの。
###pacman = Unixで動くパッケージ管理ソフト
プログラムに必要なライブラリを保持し、何が既にインストールされているか、更新版はあるかといった情報を管理している。
Windows版Rubyでgemコマンドを実行すると、必要に応じてpacmanがmsys2経由で参照され、パッケージがインストールされる。
しかし、pacmanが保持しているパッケージ更新情報が古いと適切なファイルを取得できない。
そうしたときに、pacman -Syuで情報を更新してあげることで、インストールがスムーズに進むようになる、ということのようです。