Jekyll - 命令未找到

57

我想安装Jekyll,但我没有使用Ruby的经验。
据我所知,Jekyll的安装已成功。
然而:

$ jekyll

出现错误:

-bash: jekyll: command not found
这是gem env命令的输出结果:
  - RUBYGEMS VERSION: 1.3.4
  - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin10.0]
  - INSTALLATION DIRECTORY: /Volumes/HDD/DADU/gems
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /Volumes/HDD/DADU/gems/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-10
  - GEM PATHS:
     - /Volumes/HDD/DADU/gems
     - /Volumes/HDD/DADU/.gem/ruby/1.8
     - /Library/Ruby/Gems/1.8
     - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/

我发现以下路径可以通往“something”的Jekyll:

  • ~.gem/ruby/1.8/gems/jekyll-0.11.0/lib/jekyll.rb
  • ~.gem/ruby/1.8/gems/bin/jekyll(执行文件)

3
我强烈建议使用 RVM。否则,你需要修改路径、查找文件所在位置等,这是一项繁琐的工作。如何安装 RVM:http://pragmaticstudio.com/blog/2010/9/23/install-rails-ruby-mac - Kassym Dorsel
我做了那个,现在它神奇地工作了。你发布的链接提供了非常清晰的说明。非常感谢!你可能想把它变成一个答案,这样我就可以接受它了。 - DADU
我也遇到了同样的问题。我忘记刷新 source ~/.bash_profile。将Jekyll安装到您的bash配置文件中的命令在此处:https://jekyllrb.com/docs/installation/ - rustyMagnet
1
这真是太令人沮丧了,有20个不同的答案,没有一个是清晰明了的。而且95%的用户只需要简化Git-hub页面,对Ruby、rbenv等一无所知... - Intelligent-Infrastructure
@智能基础设施 同意。任何不提到“确保gems二进制文件在您的路径中”这一点的答案对我们很多人来说都是过度杀伤力的。我不会用ruby做其他任何事情,我不需要rvm。是的,也许有一天会需要,但现在这就是我所需要的。而使用sudo安装gem可能是一个坏主意。 - user4815162342
18个回答

76

如果你使用的是MacOS系统,可以从故障排除指南中查看:

Jekyll和Mac OS X 10.11

由于系统完整性保护功能的引入,一些以前可写的目录现在被视为系统位置,并且不再可用。鉴于这些变化,有几种简单的方法可以开始运行。其中一个选项是更改gem的安装位置(仅在必要时使用sudo):

$ gem install -n /usr/local/bin jekyll

2
谢谢。这个很容易就解决了,尝试了很多其他方法之后。看来macOS真的不希望你在/usr/bin中写入文件。 - postylem
4
这对我在 Mojave 上的使用非常有帮助!谢谢。顺便说一下,我是用命令 $ gem install --user-install -n /usr/local/bin jekyll 在家目录中安装的。 - prashanth-g
3
为了使其正常工作,我必须添加--user-installgem install -n /usr/local/bin jekyll --user-install。非常感谢你的回答! - tomsihap
1
在我的电脑上也能正常工作,系统版本为macOS 10.15.6。 - anonymoose

28

对于使用以下设置的其他人:

OS X + brew 安装的 ruby + (可能)zsh

我想问题在于,按照它们的说明安装 jekyll 后,gem 将 jekyll gem 安装在 brew 蒸馏器中,而不是操作系统通常希望的某个 ruby 的 gem 目录中。

因此,在这里需要做的就是找出 brew 安装 ruby 安装 gem 的位置,找到 jekyll 二进制文件,并在/usr/bin 中创建一个符号链接。

以下是我采取的步骤:

  1. 输入 gem env 并查找 GEM PATHS。对我来说是:

    /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1

  2. 确保您可以在步骤1中的目录中看到 jekyll 二进制文件,并复制其路径(如果您无法看到,请搜索 GEM PATHS 中列出的任何其他路径)。对我来说是:

    /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/jekyll-1.4.3/bin/jekyll

  3. 使用步骤2中的路径创建到 /usr/bin/jekyll 的符号链接。我通过输入以下内容执行此操作(您可能需要使用 sudo 创建符号链接):

    cd /usr/bin && ln -s /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/jekyll-1.4.3/bin/jekyll jekyll

如果您键入jekyll,现在应该一切都很愉快。


这个方法在cygwin中对我也起作用了(稍微做了一些调整)。谢谢。 - Max Starkenburg
5
似乎较新版本的Jekyll将其二进制文件路径从bin更改为exe。 我在/usr/local/bin中的符号链接执行如下:ln -s ../Cellar/ruby/2.4.2_1/lib/ruby/gems/2.4.0/gems/jekyll-3.6.2/exe/jekyll . - cbrown
没错,@cbrown +1,对我来说,我需要按如下方式运行sudo -cd /usr/bin && sudo ln -s /usr/local/lib/ruby/gems/3.0.0/gems/jekyll-4.2.0/exe/jekyll jekyll - kenno

17

最简单的方法是使用RVM。它可以为您管理Ruby及其所有gems,并且易于使用。查看此链接以了解如何使用它。

如果您不想使用它,您需要修改PATH变量以便它可以找到您的gems。我发现这很繁琐,因此回归到了RVM,但以下是一般步骤。

您需要找出gems安装的位置。如果您使用gem install ...,则gems将位于〜/ .gem / ruby / 1.8 / gems / bin中,如果您使用sudo gem install ...,则gems将在/ System / Library / Frameworks / Ruby.framework / Versions / 1.8 / Resources中的某个位置。

您必须将此路径添加到PATH变量中。最简单的方法是运行: echo 'PATH=$PATH:above/path/to/gems' >> ~/.bash_profile


15

如果您使用的是RBENV而不是RVM,安装jekyll后只需在命令行中运行rehash即可:

rbenv rehash

这是我需要的最简单和正确的方法。几乎要执行 sudo gem install... - Zentaurus
如果你遇到了"rbenv: cannot rehash: ... shim exists"的错误,请删除.rbenv-shim文件。现在重新执行rehash命令应该可以正常工作了。 - undefined

11
我在MacOS 10.14上通过brew安装了ruby2.6.0和gem。对我而言,将以下行添加到我的~/.zshrc文件中解决了此问题。
 export PATH=/usr/local/lib/ruby/gems/2.6.0/bin:$PATH

我使用命令locate jekyll找到了Jekyll可执行文件。


10

也许有点晚了,但是...... 我在Ubuntu上安装Jekyll遇到了一些麻烦,尝试了这个帖子中其他人提供的所有方法 - 不幸的是都没有奏效。
后来,我在Jekyll网站上观看了一个视频,在再次安装整个ruby包之后,sudo gem install jekyll成功了。

在尝试任何其他方法之前,请先尝试这个:

sudo apt-get update

sudo apt-get install ruby-full

sudo gem install jekyll

jekyll -v

看起来相当简单,但在Ubuntu上运行良好。


或许对于 jekyll 来说还好,但是仅仅通过 sudo 安装所有 gem 可能不是个好主意。 - user4815162342

9

一种解决方法是编辑您的~/.bashrc文件,并添加以下行:

PATH=$PATH:~/.gem/ruby/1.8/gems/bin

这将在Bash的查找路径中添加~/.gem/ruby/1.8/gems/bin

重新打开终端,应该就可以了。或者您也可以使用以下命令:

. ~/.bashrc


目前还无法正常工作。我已经自己创建了bashrc文件,因为它尚未在~目录中,这样做正确吗? - DADU
@DADU:你确定系统中没有 ~/.bashrc 文件吗? 大多数 Linux 发行版都会有这个文件。 如果不存在此文件,则可以自己创建一个。 - Santa Zhang
谢谢。我决定使用RVM,因为它有效。我已经给你的答案点赞了。 - DADU

4

我按照这个指南来安装,而不是他们主页上的安装说明。我修改了bash_profile文件并重启终端后成功了。


非常感谢!这个指南对我解决问题也有帮助。似乎在macOS Mojave中,你必须使用“sudo”权限安装bundler和jekyll。但是还需要另一个命令将其安装在本地用户目录中。 - Henry31
这太简单了!非常感谢!我尝试了上面的 rmv 方法,但它没有起作用。 - Mehulkumar

4

以下步骤解决了我的问题

gem uninstall jekyll
sudo gem install jekyll

打开~/.bash_profile文件,在最后一行添加以下代码:
export PATH=$PATH:/usr/local/lib/ruby/gems/1.9.1/gems/jekyll-2.5.2/bin

保存并关闭.bash_profile

关闭并重新打开Mac终端,现在尝试运行jekyll,应该可以正常工作。


2

Jekyll是一个Ruby gem:例如,在Linux中,Ruby gems位于/var/lib/gems/1.8目录下,可以在“ruby env”输出中看到。

因此,您需要将此目录中的可执行文件添加到您的路径中。

通常,如果您的操作系统找不到Ruby gem,则表示:

1)您没有安装该gem或

2)您没有将该gem安装在路径上。

我发现在Linux上安装Ruby和Ruby gems可能会遇到一些问题(我发现在Ubuntu v10上可能会有些棘手,并已在IRC上与Ruby团队确认)。因此,像RVM或rbenv这样的工具可能是设置稳定、可维护的Ruby环境的最佳方法。


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