【问题标题】:When I run $ rails new testapp I get a bad interpreter当我运行 $ rails new testapp 时,我得到了一个糟糕的解释器
【发布时间】:2016-03-21 02:03:13
【问题描述】:

我正在尝试启动并运行我的开发环境,但遇到了一个重大问题。一切看起来都会取得巨大的成功,但我却遇到了一个糟糕的翻译。谁能帮我解决这个问题?

这些是我在命令行运行它们时得到的返回值:

command: `$ xcode-select version` returns: `2343.`
command: `$ rbenv version` returns: `rbenv 1.0.0`
command: `$ rbenv global 2.2.1` set rbenv to *2.2.1
command: `$ ruby -v` returns: `2.2.1p85`

到目前为止还好……

command: `$ gem install rails` returned: `Successfully installed rails-4.2.6`
command: `$ rbenv rehash` after every command
command: `$ rails new testapp` returns: `-bash: /usr/local/bin/rails: /usr/local/opt/ruby/bin/ruby: bad interpreter: No such file or directory`

我觉得我有问题。

command: `$ git --version` returns: `git version 2.5.4`

可能发生了什么,我可以从这样的跌倒中恢复过来吗?

当我启动服务器并查看 url 时,我会看到那里的 rail 版本。

command: `$ gem server`

在 url localhost:8808 我看到 3 个 gems 版本的 rails:4.2.4、4.2.5、4.2.6

我该如何解决这个问题?

【问题讨论】:

  • which ruby​​ 显示什么?
  • $ 2.2.1p85 返回ruby 2.2.1p85
  • rails 有 /usr/local/opt/ruby/bin/ruby 作为它的 shebang (#!),但这似乎不存在。如果which ruby 没有返回任何东西,并要求您输入2.2.1p85 以执行它,它搞砸了。我不是 rbenv 用户(仍然更喜欢 rvm),但这似乎是您的 rbenv 安装程序搞砸了,或者您正在使用不同版本的 ruby​​ 安装 rails,然后您正在尝试运行它。 gem 通常会将 shebang 设置为当前运行的 ruby​​ 版本。
  • 这是我的 .bash_profile 的状态:
  • 这是我的 .bash_profile 的状态:source ~/.profile ### 由 Heroku 工具带添加 export PATH="/usr/local/heroku/bin:$PATH" export PATH="/usr/bin:$PATH" export PATH="/usr/bin:$PATH" alias ll="ls -AlFahG" export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" export PATH="$HOME/.rbenv/bin:$PATH" @987654336 @@ export PATH=/usr/local/bin:$PATH 987654338@export EDITOR="atom -w"

标签: ruby ruby-on-rails-4 rubygems homebrew rbenv


【解决方案1】:

尝试使用gem cleanup 进行清理,然后重新安装rails

gem uninstall rails

gem install rails

【讨论】:

  • 我执行了这 3 个命令,但没有任何改变。我认为我的问题出在
  • 我执行了这 3 个命令,但没有任何改变。我认为问题在于此时的 bash shell。 $ gem cleanup 工作,$gem uninstall rails, worked and the $gem install rails` 安装了rails 4.2.6,但在我运行rbenv rehash 后,关闭终端应用程序并重新打开它,$ rails -v 的返回是并且继续是-bash: /usr/local/bin/rails: /usr/local/opt/ruby/bin/ruby: bad interpreter: No such file or directory .如果有帮助,我可以发布我的 .bash_profile 的内容。
【解决方案2】:

TL;DR:删除 /usr/local/bin 中所有与 ruby​​ 相关的非符号链接脚本,即带有损坏的 shebang 的所有内容。

当我意识到@Doon 在他对这个问题的评论中深深地击中了它时,我正在写一个答案:

gem 通常会将 shebang 设置为当前运行的 ruby​​ 版本。

在设置新的开发笔记本电脑后,我遇到了这个“错误的解释器”错误。我最初通过 Homebrew (brew install ruby) 安装了 ruby​​,只是为了快速启动和运行。一个公司安装脚本已经安装了 chruby,但我认为它没有构建任何 rubies。大概我还安装了一些宝石。然后我安装了 rbenv,我已经习惯并习惯了,并且使用它,我安装了几个 rubies。在某个时候,我卸载了 Homebrew 的 ruby​​ 和 chruby。

到那时,我在/usr/local/bin/ 中有几个可执行文件是常规文件(即不是 符号链接到../Cellar 中的文件),所有这些都有#!/usr/local/opt/ruby/bin/ruby 的shebang 行。但是,当我卸载 Homebrew 的 ruby​​ 时,/usr/local/opt/ruby 已被删除,导致所有这些损坏的脚本。

我的解决方案:从头开始!

  1. 卸载 rbenv 构建的 rubies (rbenv uninstall 1.2.3)
  2. 删除 /usr/local/bin 中所有与 ruby​​ 相关的非符号链接脚本。即所有带有破碎的shebang的东西
  3. 重新安装 rbenv rubies

注意:这破坏了 Homebrew 的 vim,它需要红宝石瓶,所以我重新安装了它。

/usr/local/bin 中基于 gem 的脚本现在是 Cellar 的符号链接,带有基于 Cellar 的 shebang,并且我的项目特定 rbenv 安装的 rubies 指向我的 .rbenv 文件夹。一切看起来都很好!

【讨论】:

    【解决方案3】:

    将导轨安装到上述位置。那么它应该可以工作了。

    sudo gem install -n /usr/local/bin/ rails
    

    【讨论】:

    • 这就是我一直在寻找的东西。
    【解决方案4】:

    Bijoy Thangaraj 的回答帮助解决了我的问题。我的意图是将此文本添加为​​评论,但鉴于我的声望低于 50,这是不可能的。

    如果可以将其转换为相关答案下的评论,将不胜感激。

    我尝试通过 rbenv 、 rvm 和源代码进行安装。我通过源代码专注于该过程,因为 bash 在某个点之后不再向上滚动。

    如果您对我的流程不感兴趣,请直接跳到与本页主线程直接相关的步骤 f)。

    a) 我按照gorails.com: Install Ruby On Rails on Windows 10 Guide 上的指南进行操作,

    b) 特别遵循这些步骤installing ruby on rails via source code

    c) 输入最后一条命令:~/ruby-2.7.1$ ruby -v后,

    我得到了:ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]

    仍然是 2.3 版。

    d) 但是,我输入了gorails.com - Install Ruby on Rails on Windows 10 Guide 建议的下一个命令。命令$ gem install bundler,

    我得到了:Fetching bundler-2.1.4.gem ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/local/lib/ruby/gems/2.7.0 directory.

    尝试使用$ sudo gem install bundler

    得到:Fetching bundler-2.1.4.gem Successfully installed bundler-2.1.4 Parsing documentation for bundler-2.1.4 Installing ri documentation for bundler-2.1.4 Done installing documentation for bundler after 15 seconds 1 gem installed

    e) 按照同一指南进行操作,然后输入 $ gem install rails -v 6.0.2.2

    在进行了一些抓取之后,我最终得到了:Fetching sprockets-rails-3.2.1.gem ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/local/lib/ruby/gems/2.7.0 directory.

    另外,检查 rails 版本:

    命令:$ rails -v

    结果:Traceback (most recent call last): 2: from /mnt/c/RailsInstaller/Ruby2.3.3/bin/rails:22:in' 1: 来自 /usr/local/lib/ruby/2.7.0/rubygems.rb:252:in bin_path' /usr/local/lib/ruby/2.7.0/rubygems.rb:275:infind_spec_for_exe': 找不到带有可执行导轨的 gem railties (>= 0.a) (Gem::GemNotFoundException )`。

    检查 ruby​​ 版本:

    命令:$ ruby -v

    结果:ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]

    f) 进行安装导轨:

    命令:sudo gem install rails

    结果; Done installing documentation for concurrent-ruby, i18n, thread_safe, tzinfo, zeitwerk, activesupport, rack, rack-test, mini_portile2, nokogiri, crass, loofah, rails-html-sanitizer, rails-dom-testing, builder, erubi, actionview, actionpack, activemodel, activerecord, globalid, activejob, mini_mime, mail, actionmailer, nio4r, websocket-extensions, websocket-driver, actioncable, mimemagic, marcel, activestorage, actionmailbox, actiontext, thor, method_source, railties, sprockets, sprockets-rails, rails after 1268 seconds 40 gems installed

    检查 rails 版本:

    命令:$ rails -v

    结果:bash: /mnt/c/RailsInstaller/Ruby2.3.3/bin/rails: ruby: bad interpreter: No such file or directory.

    最后,

    g) 命令:$ sudo gem install -n /mnt/c/RailsInstaller/Ruby2.3.3/bin/ rails 结果:Successfully installed rails-6.0.2.2 Parsing documentation for rails-6.0.2.2 Done installing documentation for rails after 0 seconds 1 gem installed

    检查 rails 版本:

    命令:rails -v

    结果:Rails 6.0.2.2

    检查 Ruby 版本:

    命令:ruby -v

    结果:ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 2022-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多