commonmarker gem を使っているプロジェクトがあった。
バージョンは 2.4.0 であった。
2.4.1 がリリースされたのに合わせて
bundle update
したら,commonmarker 2.4.1 のインストールがコケた。
以下のようなメッセージであった。
Installing commonmarker 2.4.1 (was 2.4.0) with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/commonmarker-2.4.1/ext/commonmarker
/Users/XXXXX/.rbenv/versions/3.4.6/bin/ruby extconf.rb
checking for clang... yes
checking for clang++... yes
checking for ar... yes
checking for cargo... yes
checking for install_name_tool... yes
current directory:
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/commonmarker-2.4.1/ext/commonmarker
make DESTDIR\= sitearchdir\=./.gem.20251008-78652-jds0nq
sitelibdir\=./.gem.20251008-78652-jds0nq clean
current directory:
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/commonmarker-2.4.1/ext/commonmarker
make DESTDIR\= sitearchdir\=./.gem.20251008-78652-jds0nq
sitelibdir\=./.gem.20251008-78652-jds0nq
generating target/release/libcommonmarker.dylib (release)
cargo rustc --manifest-path ./Cargo.toml --target-dir target --lib --profile
release -- -C linker=clang -L
native=/Users/XXXXX/.rbenv/versions/3.4.6/lib -L
native=/opt/homebrew/Cellar/gmp/6.3.0/lib -C
link-arg=-Wl,-undefined,dynamic_lookup -l pthread
error: rustc 1.79.0 is not supported by the following packages:
deranged@0.5.3 requires rustc 1.81.0
time@0.3.43 requires rustc 1.81.0
time-core@0.1.6 requires rustc 1.81.0
Either upgrade rustc or select compatible dependency versions with
`cargo update <name>@<current-ver> --precise <compatible-ver>`
where `<compatible-ver>` is the latest version supporting rustc 1.79.0
make: *** [target/release/libcommonmarker.dylib] Error 101
make failed, exit code 2
Gem files will remain installed in
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/gems/commonmarker-2.4.1
for inspection.
Results logged to
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/gems/3.4.0/extensions/arm64-darwin-24/3.4.0/commonmarker-2.4.1/gem_make.out
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:125:in
'Gem::Ext::Builder.run'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:51:in
'block in Gem::Ext::Builder.make'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:43:in
'Array#each'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:43:in
'Gem::Ext::Builder.make'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/ext_conf_builder.rb:44:in
'Gem::Ext::ExtConfBuilder.build'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:206:in
'Gem::Ext::Builder#build_extension'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:240:in
'block in Gem::Ext::Builder#build_extensions'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:237:in
'Array#each'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/ext/builder.rb:237:in
'Gem::Ext::Builder#build_extensions'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/rubygems/installer.rb:842:in
'Gem::Installer#build_extensions'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/rubygems_gem_installer.rb:111:in
'Bundler::RubyGemsGemInstaller#build_extensions'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/rubygems_gem_installer.rb:30:in
'Bundler::RubyGemsGemInstaller#install'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/source/rubygems.rb:220:in
'Bundler::Source::Rubygems#install'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/installer/gem_installer.rb:55:in
'Bundler::GemInstaller#install'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/installer/gem_installer.rb:17:in
'Bundler::GemInstaller#install_from_spec'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/installer/parallel_installer.rb:133:in
'Bundler::ParallelInstaller#do_install'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/installer/parallel_installer.rb:124:in
'block in Bundler::ParallelInstaller#worker_pool'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/worker.rb:62:in
'Bundler::Worker#apply_func'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/worker.rb:57:in
'block in Bundler::Worker#process_queue'
<internal:kernel>:168:in 'Kernel#loop'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/worker.rb:54:in
'Bundler::Worker#process_queue'
/Users/XXXXX/.rbenv/versions/3.4.6/lib/ruby/site_ruby/3.4.0/bundler/worker.rb:90:in
'block (2 levels) in Bundler::Worker#create_threads'
An error occurred while installing commonmarker (2.4.1), and Bundler
cannot continue.
おっ,こういう箇所があるね:
error: rustc 1.79.0 is not supported by the following packages:
deranged@0.5.3 requires rustc 1.81.0
time@0.3.43 requires rustc 1.81.0
time-core@0.1.6 requires rustc 1.81.0
コレ Rust 使ってるのか。C じゃなく Rust 使った拡張ライブラリーが増えてきたね(知らんけど)。
commonmarker は Rust の comrak のラッパーであるらしい。
Rust のバージョンが古いようなので,アップデートしてみる。
まず rustc のバージョンを確認:
% rustc -V
rustc 1.79.0 (129f3b996 2024-06-10)
ふむ,エラーメッセージに書かれていてたとおり 1.79.0 であった。
rustc をアップする前に rustup も上げておこう:
% rustup self update
そのうえで rustc を上げる:
% rustup update
そしてバージョンを確認:
% rustc -V
rustc 1.90.0 (1159e78c4 2025-09-14)
そして,commonmarker gem を使ったプロジェクトで
% bundle install
無事 2.4.1 がインストールできました。
環境
- macOS Sequoia 15.7.1
- ruby 3.4.6 (2025-09-16 revision dbd83256b1) +PRISM [arm64-darwin24]
- Bundler version 2.7.2