ti-enxame.com

Não é possível usar o Ruby instalado no RVM com sudo

Eu configurei com sucesso o RVM para usar o Ruby 1.9.2 e está tudo bem. No entanto, quando eu estou tentando executar Ruby usando Sudo ele diz que não pode encontrar RVM ou Ruby:

$ Ruby -v
Ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]

$ Sudo Ruby -v
[Sudo] password for administrator:
Sudo: Ruby: command not found

Esse comportamento é correto ou meu RVM está configurado incorretamente? Talvez eu deva estar usando o system wide install ?

51
Alexey Zakharov

Use o comando rvmsudo em vez de Sudo

111
calas

Tomando a resposta de @calas um passo adiante, adicione isto ao seu ~/.bashrc:

alias Sudo=rvmsudo

Isso evita a necessidade de ter que lembrar de alterar Sudo para rvmsudo para cada comando (particularmente irritante para comandos copy/pasted).

6
Craig Walker

Sudo está redefinindo seu PATH. O rvm funciona modificando sua variável de ambiente PATH para que o Ruby que você está usando seja particular, provavelmente no seu diretório ~/.rvm/rubies. Quando você Ruby Ruby com Sudo, Sudo não está usando o PATH modificado, e por isso não vai encontrar o seu Ruby rvm. Veja esta pergunta para soluções alternativas: Sudo muda PATH - por quê?

1
Brandon Yarbrough

@ calas resposta é a resposta. mas se você não conseguir atingir seu objetivo usando rvmsudo, por exemplo instale o nginx usando o comando passenger-install-nginx-module, por favor mude o dono da pasta/caminho relacionado. por exemplo. 

$ chown <your_username>:<your_group> /opt -R
$ passenger-install-nginx-module
0
Siwei Shen 申思维