Jekyll/Ruby Kramdown缺少依赖项

17

我正在努力尝试建立我的第一个 Jekyll 博客。我正在尝试运行 Jekyll 服务器,但在将其输入终端后,我收到了错误消息:

You are missing a library required for Markdown. Please run:
$ [sudo] gem install kramdown
Conversion error: Jekyll::Converters::Markdown encountered an error while converting '_posts/2013-08-15-immunize-canada-app.md/#excerpt':
                Missing dependency: kramdown
         ERROR: YOUR SITE COULD NOT BE BUILT:
                ------------------------------------
                Missing dependency: kramdown

我已经按照要求安装了kramdown,但是仍然收到这个错误。我在另一个帖子上发现需要将gem 'kramdown'添加到Gemfile中,但是仍然不起作用。我对Ruby/Jekyll非常陌生,所以非常感谢任何帮助!


你在使用bundle吗?执行bundle update命令,还有,你是否使用任何ruby版本管理器,比如rvm - matrixanomaly
你的问题解决了吗?我也遇到了同样的问题,运行 bundle update 也没有帮助。 - tim peterson
这里的最佳答案确实值得被选为最佳答案,除非它没有解决您的问题。 - mlibby
5个回答

47

我认为问题是:

gem query | grep kramdown
kramdown (1.8.0, 1.5.0)

bundle show kramdown
/Library/Ruby/Gems/2.0.0/gems/kramdown-1.5.0

如在http://bundler.io/中建议的,总是使用bundle exec

bundle exec jekyll serve --watch 
在某些情况下,如果可执行文件已经安装在您的系统中并且不会拉取任何与您的Bundle发生冲突的Gems,则在没有使用bundle exec的情况下运行可执行文件可能会起作用。但是,这种方法不够稳定,容易出现问题。即使看起来好像可以工作,未来或在其他计算机上也可能无法正常工作。

这对我很有帮助,当涉及到bundler时,把它放在故障排除列表的顶部是有意义的。谢谢! - mlibby

12

这很可能是由于安装了多个jekyll宝石程序包导致的。Jekyll可以被安装多次,因为一个人可能有以下情况:

  1. 第一次尝试通过gem install jekyll来安装
  2. 按照指南在Gemfile中添加了github-pages依赖项

因此,您应该检查是否安装了多个副本。从shell中运行gem list jekyll命令,将输出以下内容:

$ gem list jekyll

*** LOCAL GEMS ***

jekyll (2.5.3, 2.4.0)
jekyll-coffeescript (1.0.1)
jekyll-feed (0.3.1)
jekyll-gist (1.3.4, 1.2.1)
...

从您看到的,2.5.3和2.4.0已安装。 我正在运行gem uninstall以摆脱其中一个。 旧版本是github-pages的依赖项,因此只需卸载jekyll-2.5.3

$ gem uninstall jekyll

Select gem to uninstall:
 1. jekyll-2.4.0
 2. jekyll-2.5.3
 3. All versions
> 2
Successfully uninstalled jekyll-2.5.3

我以同样的方式卸载了jekyll-gist。这样你就不需要卸载ruby。


3

删除 Gemfile.lock

bundle install

运行Jekyll


1
我刚在找到正确答案之前尝试过这个方法,可以证实这不会解决问题。 - mlibby

2

我在我的环境中解决了同样的问题:

$>gem uninstall kramdown

Select gem to uninstall:
 1. kramdown-1.5.0
 2. kramdown-1.9.0
 3. All versions
> 3

You have requested to uninstall the gem:
        kramdown-1.5.0

github-pages-39 depends on kramdown (= 1.5.0)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN]  y
Successfully uninstalled kramdown-1.5.0

You have requested to uninstall the gem:
        kramdown-1.9.0

jekyll-3.0.1 depends on kramdown (~> 1.3)
jekyll-2.4.0 depends on kramdown (~> 1.3)
markdown-1.2.0 depends on kramdown (>= 1.5.0)
test-unit-3.1.5 depends on kramdown (>= 0, development)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN]  y
Remove executables:
        kramdown

in addition to the gem? [Yn]  y
Removing kramdown
Successfully uninstalled kramdown-1.9.0

$>gem install kramdown
Fetching: kramdown-1.9.0.gem (100%)
Successfully installed kramdown-1.9.0
Parsing documentation for kramdown-1.9.0
Installing ri documentation for kramdown-1.9.0
Done installing documentation for kramdown after 2 seconds
1 gem installed

该问题是由 2 个版本的 kramdown 引起的。
因此,请先卸载它,然后重新安装它。
希望这可以帮助你。

0

我在 OS X Yosemite 下遇到了同样的问题,您应该检查您的 Ruby 环境,看看 bundle install 命令是否将您的 gem 安装到了正确的位置。

which ruby
which gem
which jekyll
bundle show jekyll

您可能会发现您并没有调用您想要的正确的 jekyll


我的解决方案:

brew uninstall ruby(我使用HomeBrew安装了Ruby) brew install rbenv ruby-build(使用rbenv管理系统Ruby引用) echo 'eval "$(rbenv init -)"' >> ~/.bash_profile(或~/.zshrc)

重新启动你的shell

rbenv install 2.2.2(安装Ruby v2.2.2) rbenv global 2.2.2(将v2.2.2设置为全局默认值) rbenv versions(再次检查输出,确保默认值不是系统自带的)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接