web-dev-qa-db-ja.com

「Sudo gem install」または「gem install」とgemの場所

Sudo gem list --local」と「gem list --local」を実行すると、異なる結果が得られます。 gemパスはホームフォルダーに設定され、「gem list --local」のgemのみが含まれています。

コンピューターの異なるディレクトリにgemをインストールするのはおそらく良くないので、gemパスを異なるように設定する必要がありますか?また、何かをインストールするときは常にSudoを使用する必要がありますか?

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は空です。

132
raphael_turtle

他のすべての投稿とは反対に、gemsのインストール時にSudoを使用しないことをお勧めします。

代わりにRVMをインストールし、ポータブルgemホームと異なるバージョンのRubyすべてが1つの屋根の下に住んでいます。

初心者向けの ドキュメント から:

RVMは、複数のRuby環境とgemのセットを簡単にインストール、管理、操作できるコマンドラインツールです。

Sudoを使用してgemをインストールする理由は、gem installだけでなく、ALL USERS as rootのgemをインストールするためです。あなたがマシンを使用している唯一の人であればこれは問題ないかもしれませんが、そうでない場合は奇妙さを引き起こす可能性があります。

すべてのgemを吹き飛ばしてやり直したい場合は、root以外のユーザーとして行う方がはるかに簡単で安全です。

RVMを使用することにした場合、Sudoを使用すると、RVMを介してインストールするそれぞれのRubyバージョンに独自のGEM_HOMEがあるため、あらゆる種類の奇妙さが発生します。

また、開発環境を本番環境に可能な限り近づけることができれば便利です。本番環境では、非rootユーザーとしてgemをインストールする可能性が高くなります。

137
jonnii

ローカル環境にgemをインストールすることもできます(Sudoなし)。

gem install --user-install <gemname>

システムレベルの構成がシングルユーザーコンピューターであっても混乱しないようにすることをお勧めします。

gem environmentを使用してgempathを見ると、gemの場所を確認できます。私の場合、「〜/ .gem/Ruby/1.8」です。

パスに追加されたローカルインストールのバイナリが必要な場合は、bashrcに次のようなものを追加できます。

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

http://guides.rubygems.org/faqs/#user-install から)

115
Nils

さらに良いのは、--user-installを〜/ .gemrcファイルに入れて、毎回入力する必要がないようにすることです。

gem: --user-install
32
allyraza

あなたが

  • sudoでRuby gemsをインストールしました
  • 須藤なしで宝石をインストールしたい
  • rvm/rbenvをインストールしたくない

次を.bash_profileに追加します。

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

ターミナルOR source ~/.bash_profileで新しいタブを開き、準備完了です!

11
David Salamon

関連(バンドラーユーザー向け)、ユーザー固有の既知のディレクトリにすべてを配置するRVMのより軽量な代替が必要な場合は、以下を使用することをお勧めします。

bundle install --path $HOME/.gem

同じ場所にgemをインストールする場合

gem install --user-install GEMNAME

.gem/Ruby/RUBYVERSIONをhomedirにインストールします。 (--user-installに関するこの質問の他のコメントを参照してください。)

これにより、宝石をgem listから見えるようにし、gem uninstallを介してアンインストールできるなど、Sudoアクセスを必要としません。 gemまたはbundlerによってインストールされた実行可能なスクリプトは、以下を追加することでパスに入れることができます

$HOME/.gem/Ruby/RUBYVERSION/bin

$PATHに。 gemは、gem install --user-installを実行するときに設定されていない場合、これについて通知します。

8
Todd Vierling
Sudo gem install --no-user-install <gem-name>

gemをインストールしますglobally、つまり、すべてのユーザーのコンテキストで利用可能になります。

6

を使用して、Railsアプリの特定のフォルダー(例:vendor /)にgemをインストールできます。

bundle install --path vendor
2
Chadi