我使用了 sudo bundle install
,这可能是问题的原因?
我现在有:
宝石-v 2.6.14
ruby -v ruby 2.3.5p376(2017-09-14 修订版 59905)[x86_64-darwin15]
jekyll -v jekyll 3.6.2
捆绑 -vBundler 版本 1.16.0.pre.3
尝试运行 bundle exec jekyll serve
或仅运行 jekyll serve
时出现以下错误
/Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:271:in `find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)
from /Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:299:in `activate_bin_path'
from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/bundle:23:in `<main>'
from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `eval'
from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `<MacBooMacBook-MacBook-MacBook-Pro-MacBook-PrMacBook-MacBooMacBMaMacBMaMaMaMaMaMaMaMaMacBMaMaMaMacBMa
此外,当访问我的博客 cd my_path
所在的文件夹时,我收到以下消息:
VM 使用您的 Gemfile 来选择 Ruby,一切都很好 - Heroku 也这样做,您可以使用 'rvm rvmrc warning ignore /Library/WebServer/Documents/blog/Gemfile' 忽略这些警告。要忽略所有文件的警告,请运行“rvm rvmrc warning ignore allGemfiles”。未知的ruby解释器版本(不知道如何处理):RUBY_VERSION。
我不知道如何解决这个问题。我只想创建我的静态博客,老实说,我对 Ruby、Gem 或 Bundle 一无所知 :) 所以我会很感激一些见解!
在我的情况下,问题是 Gemfile.lock
文件具有 BUNDLED_WITH
版本的 1.16.1
和 gem install bundler
安装的版本 2.0.1
,因此在寻找正确的文件夹时版本不匹配
gem install bundler -v 1.16.1
已修复
当然,您也可以按照 Sam3000 的建议将 Gemfile.lock
的 BUNDLED_WITH
更改为最新的 bundler
版本并使用最近的软件
gem update --system
将更新 rubygems 并解决问题。
gem update --system
为我工作:ruby
2.5.0、bundler
2.0.1、macOS
10.13.6。
更新:
根据@noraj 的answer 和@Niels Kristian 的评论,以下命令应该可以完成这项工作。
gem update --system
bundle install
我写这个以防有人遇到像我这样的问题。
gem install bundler
表明一切都安装良好。
Fetching: bundler-1.16.0.gem (100%)
Successfully installed bundler-1.16.0
Parsing documentation for bundler-1.16.0
Installing ri documentation for bundler-1.16.0
Done installing documentation for bundler after 7 seconds
1 gem installed
当我输入 bundle
时出现错误:
/Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `load': cannot load such file -- /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/exe/bundle (LoadError)
from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `<main>'
from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'
在文件夹 /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/
中没有 bundler-1.16.0
文件夹。
我用 sudo gem install bundler
修复了这个问题
这修复了它:
删除 Gemfile.lock rm Gemfile.lock 再次运行 bundle install
编辑:不要在生产中这样做!
对于生产转到这个答案:https://stackoverflow.com/posts/54083113/revisions
Gemfile.lock
应该被视为最后的手段,因为它可能会导致其他问题。
如果由于 Bundler 需要 RubyGems v3.0.0 而尝试安装 bundler 2.0.1 或 2.0.0,真正的答案就在这里
昨天我发布了 Bundler 2.0,它引入了许多重大更改。其中一项更改是将 Bundler 设置为需要 RubyGems v3.0.0。在发布之后,很明显我们的很多用户都遇到了 Bundler 2 的问题,需要一个真正新版本的 RubyGems。我们一直在密切听取用户的反馈,并决定将 RubyGems 要求至少放宽到 v2.5.0。我们发布了一个新的 Bundler 版本 v2.0.1,它调整了这个要求。
有关详细信息,请参阅:https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html
原因是您当前的 ruby 环境,您获得了与 Gemfile.lock
中的版本不同的 bundler 版本。
安全的方法,在 Gemfile.lock 中安装相同版本的 bundler,如果发生了一些不合时宜的事情,这不会破坏任何东西。
很难,只需删除 Gemfile.lock,然后运行捆绑安装。
1.17
,请使用 gem install bundler -v 1.17
如果您更改了使用 rvm use
的 ruby 版本,请删除 Gemfile.lock 并重试。
要安装与您的 Gemfile.lock
匹配的捆绑程序,请使用:
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
打开 Gemfile.lock,它位于应用程序文件夹的根目录中。滚动到文件末尾并查看使用的捆绑程序版本。然后确保安装使用的捆绑器版本:
gem install bundler -v x.xx.xx
或者 - 如果您安装了更高版本的捆绑软件,请删除 Gemfile.lock 和捆绑软件。
选择是你的,我的朋友。
Gemfile.lock
文件夹中的版本就可以了!
除了许多答案之外,我的问题源于想要使用 docker 的 ruby 作为基础,然后在顶部使用 rbenv。这搞砸了很多事情。
在这种情况下,我通过以下方式修复了它:
Gemfile.lock 版本确实需要更新 - 将“BUNDLED WITH”更改为最新版本确实会更改错误消息,因此可能需要
在 .bash_profile 或 .bashrc 中,取消设置环境变量:
unset GEM_HOME
unset BUNDLE_PATH
之后, rbenv 工作正常。不知道这些环境变量是如何被加载的......
docker-compose.yml
中将 GEM_HOME、GEM_PATH 和 BUNDLE_PATH 设置为 /gems
。取消设置并重建修复它,但我更愿意弄清楚将这些设置为 /gems
并仍然让 rails new ...
之类的东西工作的细微差别......
就我而言,上述建议对我不起作用。我的情况略有不同。
当我尝试使用 gem install bundler
安装 bundler
.. 但我得到
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
然后我尝试使用 sudo gem install bundler
然后我得到了
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
然后我尝试使用 sudo gem install bundler -n /usr/local/bin
(在我的情况下只是 /usr/bin
dint 工作)。
然后成功安装bundler
编辑:我使用 MacOS,可能因为这个原因 /usr/bin
不适合我(https://stackoverflow.com/a/34989655/3786657 评论)
我今天有同样的问题。我通过删除旧 rvm
的 .bashrc
中的任何 PATH
来解决此问题。
我的问题是我正在使用 RVM 并且激活了错误的 Ruby 版本......
希望这对至少一个人有所帮助
在我的特殊情况下,我将 ruby 从 2.5.x 降级到 2.4.x。
我必须做rake clean --force
。然后做了gem install rake
等等。
BUNDLED_WITH
版本更改为最新版本的捆绑程序。这对我有用,也让我不需要过时的软件:)gem install bundler -v 1.16.1
,现在如果我运行gem.bat list bundler
,我会得到 bundler(2.0.1、1.16.1、1.9.6)。我无法更改当前版本:执行bundle.bat _1.16.1 install
给我这个错误:Could not find command "_1.16.1"
。你有什么想法,所以我不必创建一个新问题吗?谢谢!