Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bundle stderr: /bin/bash: chruby: command not found #7

Open
KamilLelonek opened this issue Jul 14, 2014 · 13 comments
Open

bundle stderr: /bin/bash: chruby: command not found #7

KamilLelonek opened this issue Jul 14, 2014 · 13 comments

Comments

@KamilLelonek
Copy link

DEBUG[20def91d] Command: cd ~/app/releases/20140714154150 && /usr/local/bin/chruby-exec ruby-1.9.3-p547 -- bundle install --binstubs ~/app/shared/bin --path ~/app/shared/bundle --without development test --deployment --quiet
DEBUG[20def91d]     /bin/bash: chruby: command not found
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing on host 100.200.300.400: bundle exit status: 127
bundle stdout: Nothing written
bundle stderr: /bin/bash: chruby: command not found
@hungryzi
Copy link

hungryzi commented Sep 2, 2014

I got the same error. Did you find out why @KamilLelonek ?

@KamilLelonek
Copy link
Author

I threw away chruby.

@grzuy
Copy link

grzuy commented Sep 30, 2014

Same issue here. Anyone found the reason?

@h0jeZvgoxFepBQ2C
Copy link

Anyone found a solution?

@cannikin
Copy link

cannikin commented Dec 8, 2014

Also getting this. Logging into the server and running chruby-exec works fine...

@fnordfish
Copy link

I had to set :pty, true (which is not a good idea). Think it's a chruby-exec problem.

@mxhold
Copy link

mxhold commented Dec 19, 2014

A quick fix to this for those that are having this issue is to add the /etc/profile.d/chruby.sh script as the chruby README suggests:

if [ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ]; then
  source /usr/local/share/chruby/chruby.sh
fi

This works because if you run chruby-exec from a non-interactive shell (which is what Capistrano does by default unless you set :pty, true) then it will run the sub-shell as a non-interactive, login shell. This means ~/.bashrc will not get loaded but /etc/profile.d will.

There is a pull request for fixing this at postmodern/chruby#250 but it looks like it needs to be updated.

@fnordfish
Copy link

Thanks for the pointers!

@leehambley
Copy link
Member

For sure that graphic is one that starts only to make sense once you actually understand what it tells you, but it won't teach you anything :-D

@lfender6445
Copy link

I ran into similar issue, but sudo appears to work fine

› /bin/bash -c '/usr/local/bin/chruby-exec 2.2.3 -- gem -v'
chruby-exec: RUBY and COMMAND required
› /bin/bash -c 'sudo /usr/local/bin/chruby-exec 2.2.3 -- gem -v'
2.4.5.1

@baccenfutter
Copy link

baccenfutter commented Apr 26, 2016

So, I just ran into this bug and researched it all the way down to the root cause.

The script chruby-exec first does a source /usr/local/share/chruby/chruby.sh then does some logic and finally runs exec $SHELL ... chruby ....

This can not work. exec will not carry shell functions to the new fork. This behaviour was changed after shell-shock. Neither the Ubtunu-14.04 nor the Gentoo ~amd64 I have here will carry the chruby shell function in the newly forked shell after exec. So to make it clear, the exec statement clears all the shell functions that chruby-exec previously sourced to function properly.

I can not explain why some users above describe to only see this when using sudo. Perhaps some quirky work-around of the individual distro they are using? Perhaps not using Bash?

source <some-shell-functions>
exec $SHELL -c 'binary-using-shell-functions-above'

... will never work.

@baccenfutter
Copy link

baccenfutter commented Apr 26, 2016

Proposed fix: remove the exec.

Why exec in the first place?
Why not just $SHELL -c "chruby ..."?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants