【问题标题】:Cannot run Jekyll new command无法运行 Jekyll 新命令
【发布时间】:2014-03-07 08:04:08
【问题描述】:

我尝试使用 Jekyll new 命令,但它不起作用并出现以下错误。

$ jekyll new myblog
/Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:385:in `require_program': program version required (Commander::Runner::CommandError)
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:384:in `each'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:384:in `require_program'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/runner.rb:52:in `run!'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/delegates.rb:8:in `run!'
from /Library/Ruby/Gems/1.8/gems/commander-4.1.6/lib/commander/import.rb:10
from /usr/bin/jekyll:23
/Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require': no such file to load -- json (LoadError)
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/jekyll-1.4.3/bin/../lib/jekyll/filters.rb:2
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/jekyll-1.4.3/bin/../lib/jekyll.rb:44
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/jekyll-1.4.3/bin/jekyll:7
from /usr/bin/jekyll:23:in `load'
from /usr/bin/jekyll:23

我使用的是 Mac OS X 10.8.5 Mountain Lion。 我检查了stackoverflow,发现了一个有类似问题的帖子。 Error when running jekyll new command 然后我尝试了以下命令。

$ sudo gem install json

但这对我的情况不起作用。我卸载并重新安装了 json 但什么也没发生。 如果您知道任何其他解决方案,请告诉我。自本周初以来,我一直被困在这个问题上......

我的gem列表&gem环境如下。

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.4)
blankslate (2.1.2.4)
classifier (1.3.4)
colorator (0.1)
commander (4.1.6)
fast-stemmer (1.0.2)
ffi (1.9.3)
highline (1.6.21)
io-console (0.4.2)
jekyll (1.4.3)
json (1.8.1)
liquid (2.5.5)
listen (1.3.1)
maruku (0.7.1)
minitest (4.7.5)
parslet (1.5.0)
posix-spawn (0.3.8)
psych (2.0.3)
pygments.rb (0.5.4)
rake (10.1.0)
rb-fsevent (0.9.4)
rb-inotify (0.9.3)
rb-kqueue (0.2.2)
rdoc (4.1.0)
redcarpet (2.3.0)
safe_yaml (0.9.7)
test-unit (2.1.1.0)
toml (0.1.1)
yajl-ruby (1.1.0)

$ gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.1 (2014-02-24 patchlevel 76) [x86_64-darwin12.0]
  - INSTALLATION DIRECTORY: /usr/local/Cellar/ruby/2.1.1/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /usr/local/Cellar/ruby/2.1.1/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/Cellar/ruby/2.1.1/bin
  - SPEC CACHE DIRECTORY: /Users/MyName/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /usr/local/Cellar/ruby/2.1.1/lib/ruby/gems/2.1.0
     - /Users/MyName/.gem/ruby/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/bin
     - /usr/local/bin
     - /usr/local/sbin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/git/bin
     - /Users/MyName/.rvm/bin

请给我建议以帮助我。谢谢!


3 月 7 日更新。

$ rvm list    
rvm rubies


# No rvm rubies installed yet. Try 'rvm help install'.

以防万一您想查看 Homebrew 列表,

$ brew list
autoconf    gmp4        libtool     openssl     readline
automake    libgpg-error    libyaml     pkg-config  ruby
cloog-ppl015    libksba     llvm        ppl011      ruby-build
gcc46       libmpc08    mpfr2       rbenv

第二次更新于 3 月 7 日。

$ which ruby
/usr/local/bin/ruby

$ which jekyll
/usr/bin/jekyll

$ ruby --version
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]

$ echo $PATH
/usr/local/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/Users/MyName/.rvm/bin

我记得在我安装 2.1.1p76 之前,我的 mac 已经安装了 Ruby 1.8.7。

【问题讨论】:

  • 运行rvm list会得到什么?
  • @SachinSingh Singh,我不认为这是一个 Rails 应用程序。 Jekyll 的网站文档需要 Ruby 和 RubyGems 来安装 Jekyll。
  • @nicksuch 我在帖子中添加了 rvm 列表,请查看。
  • 感谢您添加这些内容,@user3391537!你能检查一下which rubywhich jekyllruby --versionecho $PATH吗?看起来您的系统上可能有多个版本的 Ruby(1.8 和 2.1.1),试图找出哪些点在哪里。
  • 感谢您的回复,@nicksuch!添加了这些命令的结果。在安装 Ruby 2.1.1p76 之前,我的 Mac 中已经安装了 1.8.7。希望你能弄清楚一些事情。谢谢。

标签: ruby json macos rubygems jekyll


【解决方案1】:

您的系统上似乎有多个版本的 Ruby(1.8.7 和 2.1.1),这很常见,部分原因是创建了 rvmrbenv 等工具。问题是当您执行gem install jekyll(可能使用sudo)和sudo gem install json 时,它们似乎最终出现在不同的位置并且没有找到彼此。 /usr/local/bin 位置通常是 Homebrew 放置东西的位置(因此,ruby 列在 brew list 下),这是您的 Ruby 2.1.1 位置。但是,您的 jekyll 安装位于 Apple 安装的 Ruby 1.8.7 的位置下。

第 1 步:尝试gem uninstall jekyll,然后尝试gem install jekyll。这应该可以解决您的问题。

第 2 步:如果这不起作用,请尝试使用 rbenvrvm 选择其他版本的 Ruby,然后再次尝试第 1 步。

例如,我的安装在这里(通过rvm 管理):

$ which jekyll
/Users/nicksuch/.rvm/gems/ruby-2.0.0-p247/bin/jekyll
$ which gem
/Users/nicksuch/.rvm/rubies/ruby-2.0.0-p247/bin/gem
$ which ruby
/Users/nicksuch/.rvm/rubies/ruby-2.0.0-p247/bin/ruby

【讨论】:

  • 非常感谢@nicksuch Jekyll 终于成功了!!!你是对的。我曾经卸载过 Jekyll、Ruby(来自 Homebrew)、Rubygems、rvm,然后用 Ruby 和 Jekyll 重新安装了 rvm。之后,Ruby、gem、Jekyll 和你的一样都存放在同一个目录下。 jekyll 新命令现在正在工作。我真的很感激。你太棒了@nicksuch!!!
  • 太棒了!很高兴为您提供帮助,Jekyll-ing 快乐!
  • 我遇到了类似的问题,尝试了您的建议无济于事。我删除了所有已安装的 ruby​​ 版本,并从源代码重新安装了 rvmruby。然后我运行bundle install 并再次遇到同样的错误。我按照上面的建议检查了所有路径,它们似乎都是一致的。我该怎么办?
【解决方案2】:

在我的例子中,Jekyll 模板建议使用 bundle 实用程序:

bundle exec jekyll build

解决方案是将json 包含在Gemfile 中(这已经是来源的一部分):

diff --git a/Gemfile b/Gemfile
index 98b29af..b8537cf 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,8 @@
 source "https://rubygems.org"

+gem "json"
 gem "jekyll", "~> 3.0"
 gem "jekyll-sitemap"

详情

让我找到解决方案的是以下事实:

  • 命令gem list json 显示json gem 已安装;
  • 但命令bundle exec gem list json 没有显示任何内容。

我也尝试运行bundle exec gem install json - 它没有用。我的最佳猜测是bundle 为基于Gemfile 的单次运行设置了环境,这是使每个bundle exec ... 执行的依赖项集保持不变的唯一方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多