jruby でバンドル インストールを実行中にエラーが発生しました

概要

現在、JRuby 9.2.20.1 (2.5.8) を使用していますが、以下のエラーが発生します。

2024-03-19T16:27:22.302+05:30 [main] WARN FilenoUtil : Native subprocess control requires open access to the JDK IO subsystem
Pass '--add-opens java.base/sun.nio.ch=ALL-UNNAMED —-add-opens java.base/java.io=ALL-UNNAMED' to enable.
Your RubyGems version (3.1.6) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drop
s support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by running `gem update —-system 3.2.3`
/Users/***********/.rvm/gems/jruby-9.2.20.1/gems/bundler-2.3.26/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb:162: warning: Process#getrlimit not supported on this platform
warning: thread "Ruby-0-Thread-1: /Users/***********/.rvm/rubies/jruby-9.2.20.1/lib/ruby/stdlib/open3.rb:200" terminated with exception (report_on_exception is true):
NotImplementedError: waitpid unsupported or native support failed to load; see https://github.com/jruby/jruby/wiki/Native-Libraries
  waitpid at org/jruby/RubyProcess.java: 936
git version 2.40.0
warning: thread "Ruby-0-Thread-4: /Users/***********/.rvm/rubies/jruby-9.2.20.1/lib/ruby/stdlib/open3.rb:200" terminated with exception (report_on_exception is true):
NotImplementedError: waitpid unsupported or native support failed to load; see https://github.com/jruby/jruby/wiki/Native-Libraries
  waitpid at org/jruby/RubyProcess.java: 936
NotImplementedError: waitpid unsupported or native support failed to load; see https://github.com/jruby/jruby/wiki/Native-Libraries
  waitpid at org/jruby/RubyProcess.java: 936

JRuby のさまざまなバージョンを試しましたが、上記のエラーが発生します。私の M2 Mac のバージョンは次のとおりです。 jruby-9.2.20.1、jruby-9.2.9.0、jruby-9.4.6.0

解決策

スクリーンショットの最初の警告メッセージには次のように書かれています。

以下のエラーは、サブプロセス制御に使用される getrlimit メソッドと waitpid メソッドに関連しています。そのため、推奨される –add-opens オプションを JVM に渡すことから始めることを強くお勧めします。 (JRuby の起動時にオプションを JVM に渡す方法については、「JRuby の構成」を参照してください。)

それでも問題が解決しない場合は、エラー メッセージには JRuby wiki のネイティブ ライブラリ ページへのリンクも含まれているため、一見の価値があると考えられます。そこにあるすべてのアドバイスが必ずしもあなたの状況に当てはまるわけではありませんが、最初の推奨事項の 1 つは、 -Xnative.verbose=true コマンド ライン オプションを JRuby に渡す (または -Djruby.native.verbose=true を JVM に直接渡す) ことです。少なくとも、何が問題になっているのかについて、より詳細な出力が得られるはずです。

Apple Silicon (M2) を使用しているとのことなので、このようなレポートも見てみるとよいでしょう。簡単に言うと、古い JRuby バージョンは、Apple Silicon 上のネイティブ サブプロセス制御などを完全にはサポートしていない可能性があります。以前のバージョンの問題の多くが修正されている最新バージョン (現在 JRuby 9.4.6.0) を使用することをお勧めします。 M2 を使用する IME、最新の 9.3 ブランチ バージョンも問題ないはずですが、9.2 は不安定になる可能性があります。