Debian安装Canvas LMS执行bundle exec rails db:initial_setup遇版本冲突错误
Canvas LMS安装时Gem::LoadError:digest版本冲突问题
问题场景
在Debian系统中部署Canvas LMS,执行数据库填充步骤的bundle exec rails db:initial_setup命令时,触发如下Gem版本冲突错误:
/var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/runtime.rb:308:in `check_for_activated_spec!': You have already activated digest 3.1.0, but your Gemfile requires digest 3.1.1. Since digest is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports digest as a default gem. (Gem::LoadError) from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/runtime.rb:25:in `block in setup' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/spec_set.rb:155:in `each' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/spec_set.rb:155:in `each' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/runtime.rb:24:in `map' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/runtime.rb:24:in `setup' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb:161:in `setup' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/setup.rb:10:in `block in <top (required)>' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/shell.rb:136:in `with_level' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/shell.rb:88:in `silence' from /var/lib/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/setup.rb:10:in `<top (required)>' from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require' from <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:85:in `require'
已知当前环境激活了digest 3.1.0,但Gemfile要求3.1.1,而官方教程指定使用3.1.0版本。已尝试bundle clean --force和删除config/dynamic_settings.yml,问题未解决。
解决方案
更新Bundler版本
错误提示明确指出更新Bundler可解决默认gem的版本冲突,执行:gem update bundler更新完成后重新执行
bundle install,再运行bundle exec rails db:initial_setup。锁定digest版本为3.1.0
修改Gemfile,将digest依赖指定为教程要求的3.1.0版本:gem 'digest', '3.1.0'执行
bundle update digest锁定版本,之后重新运行初始化命令。强制使用bundle exec隔离环境
避免系统全局gem干扰,执行以下命令清理并重新安装依赖:bundle exec gem uninstall digest -v 3.1.1 bundle exec bundle install bundle exec rails db:initial_setup检查Ruby版本兼容性
digest是Ruby默认gem,版本与Ruby版本强绑定。确认当前Ruby版本是否与Canvas LMS教程要求一致,若不匹配,使用rbenv或rvm切换到指定Ruby版本后重试。
内容的提问来源于stack exchange,提问作者athalt1337
相关产品推荐
相关产品推荐

