Troubleshooting `Source locally installed gems is ignoring #<Bundler::StubSpecification name=[…] version=[…] platform=ruby> because it is missing extensions` notice

Hello, Jekyll folks. I’m scratching my head over the following notices I’m seeing after a (seemingly) successful build:

$ /home/jekyll-bot/gems/bin/bundle exec jekyll build
Source locally installed gems is ignoring #<Bundler::StubSpecification name=zlib version=3.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=syslog version=0.1.2 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=strscan version=3.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=stringio version=3.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=readline-ext version=0.2.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=rbs version=3.4.4 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=racc version=1.7.3 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=pathname version=0.3.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=openssl version=3.2.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=nkf version=0.2.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=json version=2.7.1 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=io-wait version=0.3.1 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=io-nonblock version=0.3.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=io-console version=0.7.2 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=ffi version=1.16.3 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=fcntl version=1.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=etc version=1.4.3 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=erb version=4.0.4 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=digest version=3.1.1 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=debug version=1.9.1 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=date version=3.3.4 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=cgi version=0.4.1 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=bigdecimal version=3.1.6 platform=ruby> because it is missing extensions
Configuration file: /var/www/servers/example.com/docs/staging/_github-main/_config.yml
            Source: /var/www/servers/example.com/docs/staging/_github-main
       Destination: /var/www/servers/example.com/docs/staging/_github-main/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
       Jekyll Feed: Generating feed for posts
                    done in 7.558 seconds.
 Auto-regeneration: disabled. Use --watch to enable.

The source material including _config.yml is git clone’d locally, and it doesn’t have anything that I can see is controversial:

$ cat /var/www/servers/example.com/docs/staging/_github-main/_config.yml
url: https://docs.example.com
timezone: Europe/London
permalink: /:categories/:title
plugins:
  - jekyll-feed
  - jekyll-seo-tag
  - jekyll-sitemap
author: The Development Team and contributors
exclude:
  - Gemfile
  - Gruntfile.js
  - LICENSE.txt
  - package.json
  - package-lock.json
  - README.md
  - src
kramdown:
  toc_levels: 2..4
highlighter: none
keep_files: [
  'expect-ct-report'
]

bundle is v2.7.1:

$ ~/gems/bin/bundle version
Bundler version 2.7.1 (2025-07-21 commit bd22001d8c7)

I’m running Debian 12:

$ sudo uname -a
Linux tropic 6.1.0-17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.69-1 (2023-12-30) x86_64 GNU/Linux

I’d be grateful if you could direct me to some reading material so I can better understand why this is happening with a view to resolving it.

Thank you, and best wishes.

I think your ruby installation doesn’t have the dev tools/extensions needed to install the different gems properly? some things need a C compiler (?) to build out the extension, ruby is not always installed with this.

Usually you would see errors when you do bundle install - did you not do that?

1 Like

Thanks, @rdyar. The puzzling thing is this Jekyll has been working just fine for 1–2 years, and only recently stopped behaving as expected. There were no errors on the initial install, and I haven’t pinpointed what changed to make it break.

When I run bundle install jekyll, it mentioned csv was missing:

$ bundle install
Source locally installed gems is ignoring #<Bundler::StubSpecification name=zlib version=3.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=syslog version=0.1.2 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=strscan version=3.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=stringio version=3.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=readline-ext version=0.2.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=pathname version=0.3.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=openssl version=3.2.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=io-wait version=0.3.1 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=io-nonblock version=0.3.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=fcntl version=1.1.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=etc version=1.4.3 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=digest version=3.1.1 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=date version=3.3.4 platform=ruby> because it is missing extensions
Bundler::GemNotFound: Could not find csv-3.3.4.gem for installation
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/source/rubygems.rb:178:in `install'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer/gem_installer.rb:55:in `install'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer/gem_installer.rb:17:in `install_from_spec'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer/parallel_installer.rb:133:in `do_install'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer/parallel_installer.rb:118:in `install_serially'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer/parallel_installer.rb:94:in `call'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer/parallel_installer.rb:66:in `call'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer.rb:199:in `install'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer.rb:84:in `block in run'
  /usr/lib/ruby/vendor_ruby/rubygems.rb:835:in `block in open_file_with_flock'
  /usr/lib/ruby/vendor_ruby/rubygems.rb:823:in `open'
  /usr/lib/ruby/vendor_ruby/rubygems.rb:823:in `open_file_with_flock'
  /usr/lib/ruby/vendor_ruby/rubygems.rb:809:in `open_file_with_lock'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/process_lock.rb:13:in `block in lock'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/shared_helpers.rb:105:in `filesystem_access'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/process_lock.rb:12:in `lock'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer.rb:71:in `run'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/installer.rb:23:in `install'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/cli/install.rb:74:in `run'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/cli.rb:245:in `block in install'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/settings.rb:157:in `temporary'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/cli.rb:244:in `install'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/vendor/thor/lib/thor.rb:538:in `dispatch'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/cli.rb:35:in `dispatch'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/cli.rb:29:in `start'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/exe/bundle:28:in `block in <top (required)>'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/lib/bundler/friendly_errors.rb:118:in `with_friendly_errors'
  /home/jekyll-bot/gems/gems/bundler-2.7.1/exe/bundle:20:in `<top (required)>'
  /home/jekyll-bot/gems/bin/bundle:25:in `load'
  /home/jekyll-bot/gems/bin/bundle:25:in `<main>'

An error occurred while installing csv (3.3.4), and Bundler cannot continue.

In Gemfile:
  jekyll-feed was resolved to 0.17.0, which depends on
    jekyll was resolved to 4.4.1, which depends on
      csv

…which I resolved with:

$ gem install csv -v 3.3.4
Fetching csv-3.3.4.gem
Successfully installed csv-3.3.4
Ignoring date-3.3.4 because its extensions are not built. Try: gem pristine date --version 3.3.4
Ignoring digest-3.1.1 because its extensions are not built. Try: gem pristine digest --version 3.1.1
Ignoring etc-1.4.3 because its extensions are not built. Try: gem pristine etc --version 1.4.3
Ignoring fcntl-1.1.0 because its extensions are not built. Try: gem pristine fcntl --version 1.1.0
Ignoring io-nonblock-0.3.0 because its extensions are not built. Try: gem pristine io-nonblock --version 0.3.0
Ignoring io-wait-0.3.1 because its extensions are not built. Try: gem pristine io-wait --version 0.3.1
Ignoring openssl-3.2.0 because its extensions are not built. Try: gem pristine openssl --version 3.2.0
Ignoring pathname-0.3.0 because its extensions are not built. Try: gem pristine pathname --version 0.3.0
Parsing documentation for csv-3.3.4
Installing ri documentation for csv-3.3.4
Done installing documentation for csv after 6 seconds
1 gem installed

The gem pristine […] --version […] route worked for some other gems, but not others. I ended up using gem install […] --version […] on the missing gems, and that’s resolved my issue.

Thank you for the pointers – I am most grateful to you.