find_spec_for_exe': 找不到 gem bundler (>= 0.a) (Gem::GemNotFoundException)
Posted
技术标签:
【中文标题】find_spec_for_exe\': 找不到 gem bundler (>= 0.a) (Gem::GemNotFoundException)【英文标题】:find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)find_spec_for_exe': 找不到 gem bundler (>= 0.a) (Gem::GemNotFoundException) 【发布时间】:2018-04-12 01:51:35 【问题描述】:我使用了sudo bundle install
,这可能是问题的原因?
现在我有:
gem -v
2.6.14
ruby -v
ruby 2.3.5p376(2017-09-14 修订版 59905)[x86_64-darwin15]
jekyll -v
jekyll 3.6.2
bundle -v
Bundler 版本 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 一无所知 :) 所以我会很感激一些见解!
【问题讨论】:
这可以帮助吗:github.com/rvm/rvm/issues/1860 @Cyzanfar 谢谢你!我试过了,现在进程出现新错误:***.com/questions/47035080/… 【参考方案1】:更新:
根据@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
【讨论】:
“修复”它后,请确保修复您对 .rvm 和 .gem 的目录权限 @humanity 请解释得更详细,购买编辑我的答案 @humanity chrs 为您解答 - 您能否通过修复 .rvm 和 .gem 的目录权限来详细说明您的意思? @Nik kov .rvm 和 .gem 文件夹的位置可能在您的主文件夹中。尝试通过 chmod 命令更改它们的权限。它对我有用。 sudo gem install 是不好的做法,在正常情况下,所有 gem install 都应该在没有 sudo 的情况下工作【参考方案2】:我今天遇到了同样的问题。我通过为旧的rvm
删除.bashrc
中的任何PATH
来解决此问题。
【讨论】:
你救了我,我的 bashrc 中有 export PATH="$PATH:$HOME/.rvm/bin",我删除它并且它可以工作【参考方案3】:我的问题是我使用的是 RVM 并且激活了错误的 Ruby 版本...
希望这对至少一个人有所帮助
【讨论】:
【参考方案4】:我不得不做rake clean --force
。然后gem install rake
等等。
【讨论】:
【参考方案5】:如果您使用 rvm use
更改了您正在使用的 ruby 版本,请删除 Gemfile.lock 并重试。
【讨论】:
【参考方案6】:我的问题是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
版本并使用最新的软件
【讨论】:
作为替代方案,您可能希望将BUNDLED_WITH
版本更改为最新版本的 bundler。这对我有用,也让我不需要过时的软件:)
Bundler 2 刚刚发布,因此如果您没有在 Dockerfile 中指定上述内容,您将遇到此错误bundler.io/blog/2019/01/03/announcing-bundler-2.html
嗨@antonio-tapiador 我遇到了这个问题,但我在windows上(无法切换到linux)。我已经运行gem install bundler -v 1.16.1
,现在如果我运行gem.bat list bundler
,我会得到捆绑程序(2.0.1、1.16.1、1.9.6)。我无法更改当前版本:执行bundle.bat _1.16.1 install
给我这个错误:Could not find command "_1.16.1"
。你有什么想法,所以我不必创建一个新问题吗?谢谢!
没关系,我在版本末尾缺少下划线。
谢谢。这也使用 ruby v2.5.1p57 解决了我同样的问题【参考方案7】:
在我的特殊情况下,我将 ruby 从 2.5.x 降级到 2.4.x。
【讨论】:
【参考方案8】:如果您尝试安装 bundler 2.0.1 或 2.0.0,真正的答案就在这里,因为 Bundler 需要 RubyGems v3.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
【讨论】:
谢谢,您的链接为我节省了一些时间在谷歌上搜索问题 Capistrano 在新机器上失败,但在旧机器上没有。这为我解决了这个问题。 它不可能是 OP 问题的“真正答案”,因为 Bundler 2.0 在 2017 年不存在,尽管人们肯定会找到这个页面,因为症状是一样的。 我遇到了 bundler 2.0.1 的问题 以下是 2.0.0 版中的其他重大更改:github.com/bundler/bundler/releases/tag/v2.0.0【参考方案9】:打开 Gemfile.lock,它位于应用程序文件夹的根目录中。滚动到文件末尾并查看使用的捆绑程序版本。然后确保安装使用的捆绑器版本:
gem install bundler -v x.xx.xx
或者 - 如果您安装了更高版本的捆绑软件,请删除 Gemfile.lock 和捆绑软件。
朋友,选择权在你。
【讨论】:
我不建议删除 Gemfile.lock,因为这也会更新所有 gem。这可能会导致巨大的问题。 @SandroL - 完全同意你的说法。但是,对于那些喜欢冒险并喜欢戏剧的人来说,这是一个选择。 谢谢。安装我在Gemfile.lock
文件夹中的版本就可以了!【参考方案10】:
gem update --system
将更新 rubygems 并修复问题。
【讨论】:
只是为了澄清 - 正如@noraj 指出的那样 - 问题是在新版本的捆绑器中引入的。如果您点击链接,解决方案是更新 RubyGems。gem update --system
为我工作:ruby
2.5.0,bundler
2.0.1,macOS
10.13 .6.
@ReggieB:什么链接?
@Teekin bundler.io/blog/2019/01/04/…【参考方案11】:
这解决了它:
-
删除 Gemfile.lock
rm Gemfile.lock
再次运行bundle install
编辑:不要在生产中这样做!
对于生产去这个答案: https://***.com/posts/54083113/revisions
【讨论】:
我正在使用 Visual Studio Code 并通过 Azure Devops 上传和发布,这是构建失败的地方。我只是在本地删除了锁定文件,提交然后推送。 Install Gems 步骤中的构建失败,但现在可以正常工作了。 对于现有的生产项目,这是一个糟糕的主意。您最终将安装一堆未经测试(使用您的系统)的新代码。 是的,这是一个坏主意,不应被视为修复。它确实证明了另一个答案(关于 Bundler 版本不匹配)是正确的。安装正确版本的 Bundler 应该可以修复它。 感谢@RobinDaugherty,我已经编辑了答案以警告大家不要在生产中这样做。 这也不应该在开发中完成。锁定文件有充分的理由,不应该在现有项目中删除它。 Installing the correct version of bundler on your machine 修复了问题,删除Gemfile.lock
应该被视为最后的手段,因为它可能会导致其他问题。【参考方案12】:
原因是你当前的 ruby 环境,你的 bundler 版本与 Gemfile.lock
中的版本不同。
Gemfile.lock
安装同版本的bundler,万一发生不合时宜的事情也不会破坏任何东西。
很难,只需删除Gemfile.lock
,然后运行bundle install
。
【讨论】:
谢谢。绝对每个人都应该使用 safe 版本,以免用新的 untested gems 弄乱环境。安装特定版本的捆绑器,例如1.17
使用gem install bundler -v 1.17
【参考方案13】:
就我而言,上述建议对我不起作用。我的情况略有不同。
当我尝试使用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://***.com/a/34989655/3786657 评论)
【讨论】:
【参考方案14】:除了许多答案之外,我的问题源于想要使用 docker 的 ruby 作为基础,然后在顶部使用 rbenv。这搞砸了很多事情。
我在这种情况下通过以下方式修复了它:
Gemfile.lock 版本确实需要更新 - 将“BUNDLED WITH”更改为最新版本确实会更改错误消息,因此可能需要更新 在 .bash_profile 或 .bashrc 中,取消设置环境变量:unset GEM_HOME
unset BUNDLE_PATH
之后,rbenv 工作正常。不确定这些环境变量是如何被加载的......
【讨论】:
【参考方案15】:要安装与您的Gemfile.lock
匹配的捆绑程序,请使用:
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
【讨论】:
以上是关于find_spec_for_exe': 找不到 gem bundler (>= 0.a) (Gem::GemNotFoundException)的主要内容,如果未能解决你的问题,请参考以下文章
g++ 找到 -lXext 但 MinGW 找不到它并出现错误:i586-mingw32msvc/bin/ld: 找不到 -lXext