捆绑器问题 - 未解决的规范

Bundler Issues - Unresolved Specs

我刚开始将 Jekyll 与 GitHub 页面一起使用,并且 运行 遇到了一些问题。我一直希望能够使用 this theme,尽管它已经过时了。我已将存储库克隆到我的 PC 上并 运行 bundle install 开始工作。

需要说明的是,我没有网络开发背景。我实际上是一名 Android 开发人员,希望创建我自己的关于 Android 开发人员的博客(加上想到的任何其他内容)。因此,我不完全清楚这些命令中有很多是做什么的,例如 bundle install 或者为什么在这种情况下需要 运行 它。

考虑到这一点,我继续尝试 jekyll serve 并显示了以下消息:

WARN: Unresolved specs during Gem::Specification.reset:
      rouge (< 4, >= 1.7)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
/home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:313:in `check_for_activated_spec!': You have already activated public_suffix 3.0.2, but your Gemfile requires public_suffix 2.0.5. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:31:in `block in setup'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:26:in `map'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:26:in `setup'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler.rb:107:in `setup'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/jekyll-3.7.3/lib/jekyll/plugin_manager.rb:50:in `require_from_bundler'
    from /home/mike/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/jekyll-3.7.3/exe/jekyll:11:in `<top (required)>'
    from /home/mike/.rbenv/versions/2.3.1/bin/jekyll:23:in `load'
    from /home/mike/.rbenv/versions/2.3.1/bin/jekyll:23:in `<main>

如果我使用 bundle exec jekyll serve,我有本地服务器并且可以很好地预览主题。但是,为什么我需要在前面加上 'bundle exec' 才能让事情正常进行?是否担心会看到这些消息?有什么办法可以纠正它们吗?

此外,除了创建别名之外,有什么方法可以进行更正,让我只需要 jekyll serve 就可以了?非常感谢对此的任何澄清和支持!

如果有帮助的话,下面是 Gemfile 的样子:

source "https://rubygems.org"
ruby RUBY_VERSION

# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
#     bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
# gem "jekyll", "3.7.3"

# This is the default theme for new Jekyll sites. You may change this to anything you like.
# gem "minima"

# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
gem "github-pages", group: :jekyll_plugins

# If you have any plugins, put them here!
# group :jekyll_plugins do
#   gem "jekyll-github-metadata", "~> 1.0"
# end

bundle exec 确保将在其中 运行 的 ruby 程序将使用由 Gemfile 指定的 gems 用于您的项目in。当你安装了多个版本的 gems 时它会有所帮助 - 选择正确的版本而不是 default/newest 版本。

在您的情况下,错误消息显示 You have already activated public_suffix 3.0.2, but your Gemfile requires public_suffix 2.0.5. 您安装了 gem 的较新版本,但您需要较旧的版本。这就是为什么 jekyll serve 不能在没有前缀 bundle exec 的情况下开始。

您可以使用 gemsets 分隔 gem 以避免此问题。由于您只需要使用 jekyll,因此我建议您使用别名。它更容易,我认为没有必要在这里做任何花哨的事情。