CircleCI-Public / cimg-ruby

The CircleCI Ruby Docker Convenience Image.
https://circleci.com/developer/images/image/cimg/ruby
MIT License
32 stars 39 forks source link

Unable to bundle install project that relies on libruby.so.2.7 #69

Closed adnandossaji closed 2 years ago

adnandossaji commented 3 years ago

After replacing the ruby image used in a repository's circle ci config from circleci/ruby:2.7 to cimg/ruby:2.7. I saw errors during my bundle install step. I was prompted by circle ci via email to make this migration because legacy images would not be supported after Dec. 31, 2021. Would it be possible to include this in the image? If not what would be the best steps to include to remedy this?

circleci/config.py

 [...REDACTED FOR BREVITY...] 
  static_analysis:
    executor: rails
    steps:
      - cit/bundler-preamble:
          bundler-version: 2.0.2
          cache-breaker: "1"
 [...REDACTED FOR BREVITY...] 

Backtrace from the Bundle Install step in static_analysis

Fetching bundler-2.0.2.gem
Successfully installed bundler-2.0.2
1 gem installed
The following gems are missing
 [...REDACTED FOR BREVITY...] 
Install missing gems with `bundle install`
/usr/local/lib/ruby/2.7.0/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
LoadError: libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.1/lib/psych.so
Traceback (most recent call last):
    45: from /home/circleci/.rubygems/bin/bundle:23:in `<main>'
    44: from /home/circleci/.rubygems/bin/bundle:23:in `load'
    43: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.22/exe/bundle:37:in `<top (required)>'
    42: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/friendly_errors.rb:128:in `with_friendly_errors'
    41: from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.22/exe/bundle:49:in `block in <top (required)>'
    40: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:24:in `start'
    39: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
    38: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:30:in `dispatch'
    37: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
    36: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
    35: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
    34: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:258:in `install'
    33: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/settings.rb:131:in `temporary'
    32: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:259:in `block in install'
    31: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/cli/install.rb:60:in `run'
    30: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:24:in `install'
    29: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:72:in `run'
    28: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/process_lock.rb:9:in `lock'
    27: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/process_lock.rb:9:in `open'
    26: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/process_lock.rb:12:in `block in lock'
    25: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:84:in `block in run'
    24: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/installer.rb:247:in `ensure_specs_are_compatible!'
    23: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/definition.rb:190:in `specs'
    22: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/spec_set.rb:78:in `materialize'
    21: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/spec_set.rb:78:in `each'
    20: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/spec_set.rb:83:in `block in materialize'
    19: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:280:in `double_check_for'
    18: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:313:in `dependency_api_available?'
    17: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:402:in `api_fetchers'
    16: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:272:in `fetchers'
    15: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:272:in `map'
    14: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:274:in `block in fetchers'
    13: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/source/rubygems.rb:274:in `new'
    12: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/fetcher.rb:89:in `initialize'
    11: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/fetcher.rb:247:in `connection'
    10: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/rubygems_integration.rb:114:in `configuration'
     9: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/rubygems_integration.rb:114:in `require_relative'
     8: from /usr/local/lib/ruby/site_ruby/2.7.0/bundler/psyched_yaml.rb:12:in `<top (required)>'
     7: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     6: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     5: from /usr/local/lib/ruby/2.7.0/yaml.rb:4:in `<top (required)>'
     4: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     3: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     2: from /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.1/lib/psych.rb:13:in `<top (required)>'
     1: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require': libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/project/vendor/bundle/ruby/2.7.0/gems/psych-3.3.1/lib/psych.so (LoadError)

Exited with code exit status 1
CircleCI received exit code 1
FelicianoTech commented 3 years ago

Investigating

FelicianoTech commented 2 years ago

Hi,

Is this still an issue? I'm having trouble reproducing the problem.

thibhosman commented 2 years ago

Hi there, I am having the same issue with cimg/ruby:2.7.4-browsers.

/usr/local/lib/ruby/2.7.0/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
LoadError: libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/repo/vendor/bundle/ruby/2.7.0/gems/psych-3.3.2/lib/psych.so
Traceback (most recent call last):
    48: from /home/circleci/.rubygems/bin/bundle:23:in `<main>'
    47: from /home/circleci/.rubygems/bin/bundle:23:in `load'
    46: from /home/circleci/.rubygems/gems/bundler-2.2.26/exe/bundle:37:in `<top (required)>'
    45: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/friendly_errors.rb:128:in `with_friendly_errors'
    44: from /home/circleci/.rubygems/gems/bundler-2.2.26/exe/bundle:49:in `block in <top (required)>'
    43: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/cli.rb:25:in `start'
    42: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
    41: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/cli.rb:31:in `dispatch'
    40: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
    39: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
    38: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
    37: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/cli.rb:251:in `install'
    36: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/settings.rb:131:in `temporary'
    35: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/cli.rb:252:in `block in install'
    34: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/cli/install.rb:60:in `run'
    33: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer.rb:24:in `install'
    32: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer.rb:72:in `run'
    31: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/process_lock.rb:9:in `lock'
    30: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/process_lock.rb:9:in `open'
    29: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/process_lock.rb:12:in `block in lock'
    28: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer.rb:84:in `block in run'
    27: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/installer.rb:247:in `ensure_specs_are_compatible!'
    26: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/definition.rb:182:in `specs'
    25: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/definition.rb:477:in `materialize'
    24: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/spec_set.rb:72:in `materialize'
    23: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/spec_set.rb:72:in `map!'
    22: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/spec_set.rb:75:in `block in materialize'
    21: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/lazy_specification.rb:72:in `__materialize__'
    20: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:120:in `specs'
    19: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:420:in `remote_specs'
    18: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/index.rb:9:in `build'
    17: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:421:in `block in remote_specs'
    16: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:282:in `fetchers'
    15: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:282:in `map'
    14: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:284:in `block in fetchers'
    13: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:284:in `new'
    12: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/fetcher.rb:89:in `initialize'
    11: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/fetcher.rb:247:in `connection'
    10: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/rubygems_integration.rb:114:in `configuration'
     9: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/rubygems_integration.rb:114:in `require_relative'
     8: from /home/circleci/.rubygems/gems/bundler-2.2.26/lib/bundler/psyched_yaml.rb:12:in `<top (required)>'
     7: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     6: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     5: from /usr/local/lib/ruby/2.7.0/yaml.rb:4:in `<top (required)>'
     4: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     3: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
     2: from /home/circleci/repo/vendor/bundle/ruby/2.7.0/gems/psych-3.3.2/lib/psych.rb:13:in `<top (required)>'
     1: from /usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
/usr/local/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require': libruby.so.2.7: cannot open shared object file: No such file or directory - /home/circleci/repo/vendor/bundle/ruby/2.7.0/gems/psych-3.3.2/lib/psych.so (LoadError)

Any clue or lead on what to do to fix this? Thank you!

thibhosman commented 2 years ago

@adnandossaji hi, did you try to change the cache keys in your circle ci config file? That solved this issue for us (but another appeared with image magick).

itsNikolay commented 2 years ago

You need to reset cache of your gems One way is to reset cache tby appending *__cimg_changed to name like:

      - restore_cache:
          key: bundle__cimg_changed-{{ checksum "Gemfile.lock" }}
      - save_cache:
          key: bundle__cimg_changed-{{ checksum "Gemfile.lock" }}
          paths:
            - vendor/bundle
FelicianoTech commented 2 years ago

This is looking like an issue with cache so I am going to close. If we want to discuss that Imagemagick thing more, perhaps that's #76?