web-dev-qa-db-ja.com

設定方法Ruby GEM_HOMEおよびGEM_PATH

私はLinuxのNOVICEユーザーで、Linux mint 17.1を使用しています

その問題のために過去3日間にLinux Mintを20回再インストールしましたが、修正できませんでした

Ruby on Rails rvmを使用して新しいLinuxインストールを開始し、gemをインストールしてみたところ、Rubyと1つのターミナルセッションのものが正常にインストールされましたが、ターミナルセッションを閉じるとすぐに、それらの宝石を取得できません。

過去3日間で20回以上再インストールすることで、ウェブも検索しました。環境変数を/etc/environmentに入れるように言われました。そのセッションでパスをエコーし​​、/etc/environmentファイルに貼り付けました。

今でもインストール済みのジェムを取得できません

rvm -vと入力すると、次のエラーが発生します

Warning: PATH set to RVM Ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by Shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this Shell session run: 'rvm use Ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]

私はターミナルでの作業に関して非常に初心者です。Rubyで作業するためにいくつかの基本的なコマンドを実行できます。

私が知りたいのですが

  1. PATHの設定方法
  2. GEM_HOMEの設定方法
  3. GEM_PATHの設定方法

以下は私の完全なパスです

echo $PATH
/home/sharif/.rvm/gems/Ruby-2.2.2/bin:/home/sharif/.rvm/gems/Ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/Ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin
10
Amjad

環境変数を設定するためのコマンドexportが必要なようです:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

ただし、これは現在のセッションでのみ有効になります。それらをより永続的にするには、これらの行を~/.bashrcに追加します。

18
Jonathan

通常、これは、rvmが正しくセットアップされていないことを意味します。通常の間違いは、.bashrcを正しく(または同様に)変更しなかったか、端末をリロードしなかったことです。

Rvmを使用する場合は、GEM_HOMEまたはGEM_PATHを手動で設定しないでください。

source ~/.rvm/scripts/rvmを試して、それが機能するかどうかを確認できます。

また、gemsetをまだ作成していない可能性もあります。 rvmとSudoは使用しないでください。 Rvmは、システム全体ではなく、アカウントantにインストールしたときに最適に機能します。

3
coteyr

.profileが最後に読み込まれ、パスの先頭に〜/ .local/binと〜/ binが配置されることがわかりました。 /etc/profile.d/rvm.shを〜/ .rvmに移動し、.profileの最後に「source〜/ .rvm/rvm.sh」を追加したところ、エラーは発生しなくなりました。私はLinux Mint 18.3を使用しています。私はpyenv、rvm、およびsdkmanをインストールしていて、すべてが最後になりたがっています。それらはすべて正常に動作しています。 :)

共有システムの場合は、rvm.shをパスのどこかに移動するだけで、他のユーザーが/opt/rvm/rvm.shなどからソースを入手できます。

2
RandyB

これが私が学んだことと、GEM_HOMEおよびGEM_PATH環境変数が設定されないエラーのこの一見一般的な問題をどのように解決したかです。


背景

RVMのインストールでは、セットアップされているRVMごとにGEM_HOMEとGEM_PATHの環境変数が作成され、それが行われます。しかし、明らかに環境変数が一時的にしか設定されないようなバグがあり、それらを再設定するには、コマンドラインで設定する必要があります。 RVMでenv変数を永続化するための回避策を見つけました。

回避策

  1. アクティブ(RVM内)を検索)Ruby version:本番サーバーでアプリディレクトリに移動し、$rvm listと入力します。これにより、リストが表示されますRubyインストールされているバージョンのうち、どれがRVMでアクティブであるか。応答の例:

    rvm rubies Ruby-1.9.3-p547 [ x86_64 ] => Ruby-1.9.3-p551 [ x86_64 ]

したがって、RVMは現在バージョンRuby-1.9.3-p551を使用していることがわかります。次のステップでこの情報が必要になります。

  1. GEM_PATHおよびGEM_HOMEのパスを取得:これは、コマンドライン$rvm use Ruby-1.9.3-p551から実行して行います。次に、コマンドラインから、command envを使用してすべての環境設定を表示します。 GEM_PATHとGEM_HOMEを検索し、それら全体をワークスペースにコピーします。

    GEM_PATH=/usr/local/rvm/gems/Ruby-1.9.3-p551:/usr/local/rvm/gems/Ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/Ruby-1.9.3-p551

  2. GEM_HOMEおよびGEM_PATH環境変数を設定します:次に、これらの環境変数を多数のプロファイルファイルの1つに設定します。 RVMバージョンの分離構造を維持したかったので、/ profile.d/appspecific.shを次の2行で更新しました。

    export GEM_PATH=/usr/local/rvm/gems/Ruby-1.9.3-p551:/usr/local/rvm/gems/Ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/Ruby-1.9.3-p551

2
Va As

@coteyrについて述べたように、GEM_HOMEおよびGEM_PATHを手動で設定しないでくださいrvmを使用する場合。 PATH環境変数を確認する場合、$ echo $PATHを実行して$ HOME/.rvm/binがその一部である場合は、端末がログインシェルとしてコマンドを実行していることを確認する必要があります。たとえば、Ubuntuマシンを使用している場合は、ターミナルを開いて、menu> Edit> Profile Preferences> Commandに移動し、[Run commandログインシェルとして」

これはrvmの古い問題のようですが、しばらくの間使用されているため、修正するのは簡単ではないと思います。

1
Lym

$GEM_PATHに私のシステム(Manjaro/Arch)を入力するためにgems.bashrcに追加しました:

for _entry in /usr/lib/Ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
1
Tom Hale