‘sudo gem install’ ou ‘gem install’ e localizações de gem

Executar ‘ sudo gem list --local ‘ e ‘ gem list --local ‘ me dá resultados diferentes. Meu caminho gem está definido para a minha pasta pessoal e contém apenas as jóias de ‘ gem list --local ‘.

Provavelmente não é bom ter gemas instaladas em diretórios diferentes no meu computador, então devo ter o caminho gem definido de forma diferente, e devo sempre usar o sudo ao instalar algo?

 my ~/.profile export PATH=/opt/local/bin:/opt/local/sbin:$PATH export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 

~ / .bash_profile está vazio.

Ao contrário de todos os outros posts eu sugiro não usar o sudo ao instalar pedras preciosas.

Em vez disso, eu recomendo que você instale o RVM e comece uma vida feliz com portáteis e uma versão diferente do Ruby, todos vivendo sob o mesmo teto.

Para os não iniciados, da documentação :

O RVM é uma ferramenta de linha de comando que nos permite instalar, gerenciar e trabalhar facilmente com vários ambientes e conjuntos de gemas ruby.

A razão pela qual instalar gems com o sudo é pior do que apenas gem install é porque ele instala as gems para TODOS OS USUÁRIOS como root . Isso pode ser bom se você for a única pessoa a usar a máquina, mas se não for, pode causar estranheza.

Se você decidir que quer gastar todas as suas gemas e começar de novo, é muito mais fácil e seguro fazê-lo como um usuário não-root.

Se você decidir usar o RVM , usar o sudo causará todo tipo de estranheza, pois cada versão do Ruby que você instala através do RVM possui seu próprio GEM_HOME.

Além disso, é bom se você puder tornar seu ambiente de desenvolvimento o mais próximo possível do seu ambiente de produção, e na produção você provavelmente instalará gems como um usuário não-root.

Você também pode instalar gemas em seu ambiente local (sem sudo ) com

 gem install --user-install  

Eu recomendo que você não mexa com sua configuração no nível do sistema, mesmo que seja um computador de usuário único.

Você pode verificar onde as gemas vão, olhando para gempaths com o gem environment . No meu caso é “~ / .gem / ruby ​​/ 1.8”.

Se você precisar de alguns binários de instalações locais adicionados ao seu caminho, você pode adicionar algo ao seu bashrc como:

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

(de http://guides.rubygems.org/faqs/#user-install )

Melhor ainda, coloque --user-install no seu arquivo ~ / .gemrc para que você não precise digitá-lo sempre

 gem: --user-install 

No caso de você

  • Instalado ruby gemas com sudo
  • quer instalar gemas sem sudo
  • não quero instalar rvm / rbenv

adicione o seguinte ao seu .bash_profile :

 export GEM_HOME=/Users/‹your_user›/.gem export PATH="$GEM_HOME/bin:$PATH" 

Abra uma nova guia no Terminal OR source ~/.bash_profile e source ~/.bash_profile !

Relacionado (para usuários bundler), se você quiser uma alternativa mais leve ao RVM que colocará tudo em um diretório conhecido específico do usuário, recomendo usar:

 bundle install --path $HOME/.gem 

se você quiser instalar gemas no mesmo lugar que

 gem install --user-install GEMNAME 

irá instalá-los, .gem/ruby/RUBYVERSION no seu .gem/ruby/RUBYVERSION . (Veja o outro comentário sobre esta questão sobre --user-install .)

Isso tornará as gemas visíveis para a gem list , desinstaláveis ​​através da gem uninstall , etc., sem a necessidade de access ao sudo . Scripts executáveis ​​instalados por gem ou bundler podem ser colocados em seu caminho adicionando

 $HOME/.gem/ruby/RUBYVERSION/bin 

para o seu $PATH . gem própria gem informa sobre isso se não estiver definida quando você gem install --user-install .

 sudo gem install --no-user-install  

irá instalar sua gem globalmente , ou seja, estará disponível para todos os contextos do usuário.

Você pode instalar gems em uma pasta específica (exemplo vendor /) em seu aplicativo Rails usando:

 bundle install --path vendor