2014-03-07 75 views
11

我试图用杰基尔新的命令,但没有工作,就出来了以下错误。无法运行杰奇新的命令

$ 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 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 

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


更新于7月

$ rvm list  
rvm rubies 


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

万一你想看到家酿名单,

$ 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 

2日更新年03月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。

+0

这是一个轨道应用程序? –

+0

运行'rvm list'时会得到什么? – nicksuch

+0

@SachinSingh Singh,我不认为这是一款Rails应用程序。 Jekyll的网站文档要求Ruby和RubyGems安装Jekyll。 – Keita

回答

9

它看起来像您的系统上有多个版本的Ruby(1.8.7和2.1.1),这是非常常见的,部分原因工具如rvmrbenv已创建。问题是,当你(一个sudo也许)和sudo gem install json没有gem install jekyll,这些似乎在不同的点已经结束了,并没有找到对方。该/usr/local/bin位置通常在那里家酿把东西(因此,你必须brew list中列出ruby),这是你的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 
+2

非常感谢你@nicksuch杰基尔终于工作!你是对的。我卸载了Jekyll,Ruby(来自Homebrew),Rubygems,rvm,然后用Ruby和Jekyll重新安装了rvm。之后,Ruby,gem,Jekyll已经存储在与您的目录相同的目录中。 jekyll新的命令现在工作。我真的很感激。你真棒@nicksuch !!! – Keita

+1

非常好!很高兴帮助,快乐Jekyll ing! – nicksuch

+0

我有一个类似的问题,并试图您的建议都无济于事。我删除了所有安装的ruby版本,并从源代码重新安装了'rvm'和'ruby'。然后我运行'bundle install'并重新得到相同的错误。我按照上面的建议检查了我所有的路径,它们看起来都一致。我该怎么办? –

3

在我的情况下哲基尔模板建议使用bundle实用程序:

bundle exec jekyll build 

的解决方案是包括jsonGemfile(这已经是源的一部分):

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宝石;
  • 但命令bundle exec gem list json没有显示任何内容。

我也试着运行bundle exec gem install json - 它没有工作。我最好的猜测是bundle基于Gemfile设置了单次运行环境,这是使每组执行中的依赖关系持续存在的唯一方法。