LoginSignup
0
0

More than 1 year has passed since last update.

Ruby Gem Install で Installing required msys2 packagesに失敗するときは

Last updated at Posted at 2021-09-30

備忘録です。

$ 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で情報を更新してあげることで、インストールがスムーズに進むようになる、ということのようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0