Jekyll - command not found
Asked Answered
U

18

60

I am trying to get Jekyll running but I have no experience with Ruby.
As far as I can tell the installation of Jekyll has succeeded.
However:

$ jekyll

Gives an error:

-bash: jekyll: command not found

This is the gem env result:

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

And I found the following paths leading to "something" Jekyll:

  • ~.gem/ruby/1.8/gems/jekyll-0.11.0/lib/jekyll.rb
  • ~.gem/ruby/1.8/gems/bin/jekyll (exec file)
Uvula answered 16/11, 2011 at 3:18 Comment(5)
I would highly recommend to use RVM. Otherwise you will have to modify paths, find were stuff is located, etc. A tedious job. How to install rvm : pragmaticstudio.com/blog/2010/9/23/install-rails-ruby-macBreault
I did that and now it works magically. The link you posted offers very clear instructions. Thanks a lot! You might want to make it into an answer so I can accept it.Uvula
I hit the same. I had forgotten to refresh source ~/.bash_profile. The commands to install jekyll into your bash profile are here: jekyllrb.com/docs/installationWinther
this is soooooo.....frustrating 20 different answers, no one which is clear. And 95% of users just needs it to simplify git-hub pages and have no idea about ruby, rbenv, etc...Glance
@Glance Agreed. Any answer that doesn't say "make sure the gems binary are in your path" is overkill for a lot of us. I don't use ruby for anything else, I don't need rvm. Yes, maybe someday, but for now that's all I need. And installing the gem with sudo is probably a bad idea.Denisse
B
17

The easiest method of doing this is to use RVM. It manages Ruby and all its gems for you and it's easy to use. See this link for using it.

If you did not want to use that you will need to modify your PATH variables so it can find your gems. I have found this to be tedious and reverted to RVM, but here are the general steps.

You will need to find out where your gems are getting installed. If you did gem install ... the gems will be in ~/.gem/ruby/1.8/gems/bin, if you used sudo gem install ... the gems will be somewhere in /System/Library/Frameworks/Ruby.framework/Versions/1.8/Resources

You have to add this path to your PATH variable. Easiest way to do this is by running : echo 'PATH=$PATH:above/path/to/gems' >> ~/.bash_profile

Breault answered 16/11, 2011 at 14:25 Comment(0)
D
81

If you are using MacOS, from the Troubleshooting guide:

Jekyll & Mac OS X 10.11Permalink

With the introduction of System Integrity Protection, several directories that were previously writable are now considered system locations and are no longer available. Given these changes, there are a couple of simple ways to get up and running. One option is to change the location where the gem will be installed (again, using sudo only if necessary):

$ gem install -n /usr/local/bin jekyll
Demagoguery answered 19/8, 2018 at 20:18 Comment(4)
thank you. this worked so easily, adter trying so many other things. it seems macOS really doesn't want you to write in /usr/binBuckshot
This really helped me in Mojave! Thanks. BTW, I installed in the home directory with $ gem install --user-install -n /usr/local/bin jekyll.Marieann
I had to add --user-install to make it work : gem install -n /usr/local/bin jekyll --user-install. Thanks a lot for your answer !Dune
Working for me as well, on macOS 10.15.6.Curtin
E
29

For others coming here with the following set up:

OS X + brewed install of ruby + (possibly) zsh

I figured the problem is that after installing jekyll as per their instructions, gem installs the jekyll gem in the brew cellar, not where the OS usually expects it (somehwere in a gem directory for ruby).

So, all that was needed here was to find out where the brew install of ruby installs gems, locate the jekyll binary, and create a symbolic link to it in /usr/bin.

Here is are the steps I took to fix it:

  1. Type gem env and look for GEM PATHS. For me it was:

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

  2. Make sure you can see the jekyll binary in the directory from 1 above and copy its path (if you can't, search any other paths listed in GEM PATHS for it). For me it was:

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

  3. Use the path from step 2 above to create a symlink to /usr/bin/jekyll. I did it by typing this (you might need sudo to create the symlink):

    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

Now all should be merry if you type jekyll.

Eld answered 15/3, 2014 at 11:9 Comment(3)
This seems to have worked for me (with a few adjustments) in cygwin as well. Thank you.Rhaetia
Newer versions of Jekll appear to have their binary in an exe path instead of bin. My sym link execution in /usr/local/bin was ln -s ../Cellar/ruby/2.4.2_1/lib/ruby/gems/2.4.0/gems/jekyll-3.6.2/exe/jekyll .Mattress
yup, @Mattress +1, for me I needed to run sudo as follows - cd /usr/bin && sudo ln -s /usr/local/lib/ruby/gems/3.0.0/gems/jekyll-4.2.0/exe/jekyll jekyllSchuyler
B
17

The easiest method of doing this is to use RVM. It manages Ruby and all its gems for you and it's easy to use. See this link for using it.

If you did not want to use that you will need to modify your PATH variables so it can find your gems. I have found this to be tedious and reverted to RVM, but here are the general steps.

You will need to find out where your gems are getting installed. If you did gem install ... the gems will be in ~/.gem/ruby/1.8/gems/bin, if you used sudo gem install ... the gems will be somewhere in /System/Library/Frameworks/Ruby.framework/Versions/1.8/Resources

You have to add this path to your PATH variable. Easiest way to do this is by running : echo 'PATH=$PATH:above/path/to/gems' >> ~/.bash_profile

Breault answered 16/11, 2011 at 14:25 Comment(0)
C
15

If you are using RBENV instead of RVM you simply need to run rehash in the command line after installing jekyll:

rbenv rehash
Cleptomania answered 4/11, 2015 at 17:38 Comment(2)
This is the easiest and the right one I needed. Almost got to do sudo gem install...Ravin
Delete the .rbenv-shim file if you get "rbenv: cannot rehash: ... shim exists" error. Now rehash will work.Doit
A
11

I installed my ruby2.6.0 and gem via brew on MacOS 10.14.
For me, add the following line to my ~/.zshrc solved this issue.

 export PATH=/usr/local/lib/ruby/gems/2.6.0/bin:$PATH

I found jekyll executable file with command locate jekyll.

Alwitt answered 25/1, 2019 at 14:34 Comment(0)
P
10

Maybe a little late, but... I had some trouble to install Jekyll on Ubuntu and tried everything that people answered in this thread - unfortunately nothing worked.
Then, I watched a video on Jekyll's site and after installing the whole ruby package again, sudo gem install jekyll worked.

Try it before anything else:

sudo apt-get update

sudo apt-get install ruby-full

sudo gem install jekyll

jekyll -v

It seems pretty simple, but it works on Ubuntu.

Poteen answered 17/1, 2017 at 20:3 Comment(1)
Might be okay with jekyll, but probably a bad idea to just install all gems with sudo.Denisse
L
9

One solution would be editing your ~/.bashrc file and add this line:

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

This will add ~/.gem/ruby/1.8/gems/bin in Bash's lookup path.

Reopen the terminal and it should work. Or you can use the following command:

. ~/.bashrc

Longterm answered 16/11, 2011 at 4:7 Comment(3)
Somehow it doesn't work yet. I've made the bashrc file myself because it wasn't in the ~ directory yet, is that correct?Uvula
@DADU: Are you sure that you don't have a ~/.bashrc file in your system? Most linux distribution will have one. If no such file exists, you can create one by yourself.Longterm
Thanks. I've decided to go with RVM since it works. I've upvoted your answer.Uvula
S
4

Following steps solved my problem

gem uninstall jekyll
sudo gem install jekyll

Open ~/.bash_profile and add this code in the last line,

export PATH=$PATH:/usr/local/lib/ruby/gems/1.9.1/gems/jekyll-2.5.2/bin

Save and close the .bash_profile

Close and reopen the mac terminal, try running jekyll now, it should work

Silviasilviculture answered 17/12, 2014 at 15:15 Comment(0)
M
4

For me, I followed this installation guide instead of their main page's installation instruction. It worked after I changed the bash_profile file and restarted Terminal.

Marry answered 11/9, 2019 at 1:43 Comment(2)
Thanks a lot! This guide helped me to solve my problems as-well. Seems that with macOS Mojave you have to install the bundler and jeklly with "sudo" permissions. But with an additional command to install it in your local user directory.Hageman
This was so simple! Thanks a lot! I tried rmv way above but it didn't work.Stalk
A
2

Jekyll is a ruby gem : Ruby gems in linux, for example, are in /var/lib/gems/1.8, as can be seen in the "ruby env" output.

Thus, you need to add the executables in this directory to your path.

In general, if a ruby gem is "not found" by your OS, it simply indicates that either

1) You don't have the gem installed or

2) You don't have the gem installed in a directory that is on your path.

I have found that there have been a few issues with installing ruby and ruby gems on linux (I have found that it can be tricky on Ubuntu v10, and have confirmed this with the Ruby folks on IRC). Thus, tools like RVM or rbenv might be the best approach to setting up a stable, maintainable ruby environment.

Ancalin answered 8/5, 2012 at 21:8 Comment(0)
E
1

@jayunit100,

I'm running into the same issue with a Jekyll blog. I've installed the gem via RVM in a 'Blog directory and the _config.yml file says that it should generate into Blog/_site. Is it as simple as adding Blog to the PATH or is there something else I'm missing?

Update: My bad, I didn't really have the gem installed. Lesson learned: rvm requirements and brew doctor are there for a reason - before you install stuff USE THEM

Eastertide answered 6/3, 2013 at 19:34 Comment(0)
T
1

Easier than creating a symlink just install it correctly. If you got permission errors like a lot of people are getting when trying to use

gem install jekyll

instead use

sudo gem install jekyll
Trunkfish answered 27/5, 2016 at 22:40 Comment(1)
No one should be advised to use sudo.Eda
F
1

In my case I had to run bundle install --force

Then bundle exec jekyll serve works, but jekyll serve still doesn't. It seems I'll have to go with the former from now on…

Feign answered 8/12, 2017 at 21:51 Comment(0)
E
1

When you use the --user-install option, RubyGems will install the gems to a directory inside your home directory, something like ~/.gem/ruby/1.9.1. The commands provided by the gems you installed will end up in ~/.gem/ruby/1.9.1/bin. For the programs installed there to be available for you, you need to add ~/.gem/ruby/1.9.1/bin to your PATH environment variable.

For example, if you use bash you can add that directory to your PATH by adding code like this to your ~/.bashrc file:

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

https://guides.rubygems.org/faqs/#user-install

I put it in the .bash_profile (Mac OS X).

https://hathaway.cc/2008/06/how-to-edit-your-path-environment-variables-on-mac/

Ebonize answered 22/1, 2019 at 10:48 Comment(0)
E
0

Here's an updated answer for 2020 (soon 2021). To install any Ruby gem, whether it's Jekyll, Bundler, Rails, etc., you need a proper Ruby development environment on a Mac. There are various ways to install Ruby on a Mac, as I have written about in great detail in my definitive guide to installing Ruby gems on a Mac. The only one I recommend is to use a Ruby manager because it's the most flexible and sets you up for success for the long term. My preferred one is chruby because it's the lightest and easiest to use. As part of installing Ruby, you also need to properly configure your shell startup file (typically ~/.zshrc or ~/.bash_profile) so that it knows where to find the gems you install. Otherwise, you'll get the "command not found" error, which I've also written about.

Since there are several steps involved in setting up a working Ruby development environment on a Mac, I wrote some scripts to automate the whole process and make things easier and faster for people. You can read more about the scripts in my guide mentioned above.

Electrobiology answered 3/12, 2020 at 2:55 Comment(0)
O
0

I had this problem for a very stupid reason, which is that I was working on Linux and had installed both flatpak and .deb versions of Visual Studio Code. I was confused because I could successfully run bundle exec jekyll serve in the terminal application, but not from the integrated terminal in Visual Studio Code.

Well, it turns out the integrated terminal loaded my PATH correctly in the .deb version but not the flatpak one. So... if you, like me, have foolishly installed multiple versions of Visual Studio Code, check which one you are using.

Obtect answered 7/7, 2022 at 16:6 Comment(0)
D
0

This is what worked for me. I'm not developing in ruby, and don't have a lot of tools that I use it for, so I don't need RVM. I also don't need to install jekyll as root. I just want it to run.

(This answer is just a more descriptive version of answers by Santa Zhang, jayunit100, and a few others.)

1. Find Local Gem Path

> gem env

Assuming this runs, it will list a bunch of useful information. You are looking for GEM PATHS. If there are two, then you want the one that is found in your home directory. Mine was something like /home/<user>/.local/share/gem/ruby/3.0.0

If it doesn't run, install the ruby gem program and try again.

2. Find Gem Binaries Path

Look in that directory until you find the location where the jekyll executable is actually installed. I found it in /home/<user>/.local/share/gem/ruby/3.0.0/bin/jekyll. But what I need is the directory path, not the file, so: /home/<user>/.local/share/gem/ruby/3.0.0/bin/.

3. Add That to PATH

Figure out how to add a directory to your PATH environment variable. Instructions for that are too extensive to provide here, as it depends on your operating system and preferred shell, and the versions of the same. Search for that information elsewhere on Stackoverflow.

4. Restart Your Session

Close your terminal and open a new one. Make sure the directory was added to your path. Depending on how you set your PATH variable, you might need to log out of your session and log in again.

Denisse answered 23/12, 2022 at 16:59 Comment(0)
N
0

I had to update my PATH variable like this:

export PATH=$HOME/.gem/bin:$PATH

When I now try to run the jekyll command, my system will check the /home/henry/.gem/bin directory for the executable.

Note I am using Debian 10 and note this update will not persist for new sessions.

Neddra answered 22/4, 2023 at 12:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.