RVM is not working over SSH

前端 未结 10 1545
时光取名叫无心
时光取名叫无心 2020-12-25 13:05

RVM is not working over SSH.

At the command-line:

leifg@host:~$ which ruby
/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby

Connected

相关标签:
10条回答
  • 2020-12-25 13:32

    I've just added at the top of ~/.bashrc (for git user) this string:

    [[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"
    
    0 讨论(0)
  • 2020-12-25 13:33

    I had the same problem. I realized, that I accidentally installed RVM for multiple users, too. After deleting the directory /usr/local/rvm and edit ~/.bashrc like zoonmix suggested, the problem was solved.

    0 讨论(0)
  • 2020-12-25 13:34

    Actually there's totally another, more safe and lightweight option.

    You add "PermitUserEnvironment yes" somewhere to your sshd_config in /etc/(open)ssh

    Now you are allowed to specify user environment in /home/user/.ssh/environment. So what do you put there ?

    Just something like :

    user# env | grep rvm > ~/.ssh/environment
    

    so it looks like below :

    user@app3:~$ cat ~/.ssh/environment 
    rvm_bin_path=/usr/local/rvm/bin
    GEM_HOME=/usr/local/rvm/gems/ree-1.8.7-2012.02
    IRBRC=/usr/local/rvm/rubies/ree-1.8.7-2012.02/.irbrc
    MY_RUBY_HOME=/usr/local/rvm/rubies/ree-1.8.7-2012.02
    rvm_path=/usr/local/rvm
    rvm_prefix=/usr/local
    PATH=/usr/local/rvm/gems/ree-1.8.7-2012.02/bin:/usr/local/rvm/gems/ree-1.8.7-2012.02@global/bin:/usr/local/rvm/rubies/ree-1.8.7-2012.02/bin:/usr/local/rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    rvm_version=1.14.5 (stable)
    GEM_PATH=/usr/local/rvm/gems/ree-1.8.7-2012.02:/usr/local/rvm/gems/ree-1.8.7-2012.02@global
    

    Note: this also works work user-install RVM (not only for the system wide)

    Now your are able to use ruby in ssh non interactive sessions :

    ssh user@app3 'ruby --version'
    ruby 1.8.7 (2012-02-08 MBARI 8/0x6770 on patchlevel 358) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2012.02
    

    Voila!

    0 讨论(0)
  • 2020-12-25 13:36

    zoomix's is the best solution. But when you change with "ruby rvm use system" in terminal or what else you get an error : Warning! PATH is not properly set up, is not at first place.... To solve that put the snippet just before the return instead of at the top of the .bashrc file (Debian Jessie here)

    case $- in
    *i*) ;;
      *) 
      [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
      return;; esac
    
    0 讨论(0)
  • 2020-12-25 13:40

    Actually, your ~/.bashrc will be executed. The problem is usually that one adds the

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
    

    ... snippet at the bottom of the file. However, the default .bashrc on ubuntu systems includes the following near the top

    # If not running interactively, don't do anything
    [ -z "$PS1" ] && return
    

    That call will stop executing the rest of the script and will therefore not set the proper paths. So you can either put the rvm call at the top of the file or remove the return call.

    0 讨论(0)
  • 2020-12-25 13:44

    From the ssh man page:

    If command is specified, it is executed on the remote host instead of a login shell.

    This should mean that your .bashrc won't get sourced, so RVM doesn't get set up.

    Solution

    This did the trick in the end:

    ssh <host> bash --login -c <command>
    

    Start bash as a login shell through SSH and then start the RVM installed Ruby via SSH's -c option.

    0 讨论(0)
提交回复
热议问题