AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

特定プラットフォームの Ruby 2.7 環境に ffi 1.17.0 以降がインストールできない

こういうやつ。

Fetching gem metadata from https://rubygems.org/........ ffi-1.17.0-x86_64-linux-musl requires rubygems version >= 3.3.22, which is incompatible with the current version, 3.1.6

見てるプロジェクトのバックエンド側で「動かないんじゃが?」と言っている兄貴がいたのでちょっと見たりしていた。

対処方法

とりあえず Gemfile に以下のように 1.17.0 未満をインストールするように明示してしまえば、動きはするはず。

gem "ffi", "< 1.17.0"

原因

rubygems 見てて気付いたんですが、v1.17.0 以降は Linux プラットフォーム向けだけ rubygems の要求が >= 3.3.22 となっているんですよね。

以下とか。

rubygems.org

AppleSillicon 向けと思われるやつだと、 rubygems の要求がない。

rubygems.org

答えは chef の organization で issue 書いてる兄貴がいるんだけど

ffi 1.17 and beyond requires a newer RubyGems than is installed with the ruby versions we are using.

FFI 1.17以降は、使用しているRubyバージョンでインストールされているよりも新しいR​​ubygemsを必要とします。

github.com

という感じ。

外人兄貴たちの悲鳴

以下のように。

github.com

github.com

Macbook で開発してて本番は Linux

というヤツだと悲劇の発生が遅れて「オンギャアア」となると思うんだけど、今回は幸い開発環境を x86Linux にしている兄貴のお陰で助かった、というワケ。

これ理由がわかんねえんだよな、なんで rubygem の要求が厳しいんだろう。

Gemfile 見ると以下のように書いてあって 2.6 以上を許容しているように見えるんだけどな。 rubygems のバージョン要求ってどこで書いてんだろ。

group :type_check do
  if RUBY_VERSION >= "2.6" && %w[ ruby truffleruby ].include?(RUBY_ENGINE)
    gem 'rbs', '~> 3.0'
  end
end