Ruby GEM_HOMEとGEM_PATHを設定する方法


10

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

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

新しいLinuxインストールを開始し、ターミナルセッションを閉じてすぐに正常にインストールされた1つのターミナルセッションにgemとrubyなどをインストールしようとすると、rvmを使用してRailsにrubyをインストールしようとしましたが、gemを取得できません。

過去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 <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [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

mr @mohsen pahlevanzades私がこれらの2行を削除することのポイントは何でしょうか。私に言ってよろしければ、よろしくお願いします
Amjad

私が正しいことを覚えているなら、あなたはよろしく書いたか、ありがとうと言いました
ペルシャ湾

回答:


18

export環境変数を設定するコマンドが必要なように聞こえます:

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

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


3

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

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

うまくいくsource ~/.rvm/scripts/rvmかどうか試してみることができます。

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


をに追加source ~/.rvm/scripts/rvmして~/.bashrc、新しいシェルを起動するたびに読み込まれるようにすることもできます。
Niel de Wet

2

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


バックグラウンド

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

回避策

  1. アクティブな(RVM内の)Rubyバージョンを見つけます。本番サーバーでappディレクトリに移動し、と入力し$rvm listます。これにより、インストールされているRubyのバージョンと、RVMに対してアクティブなバージョンのリストが表示されます。応答の例:

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

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

  1. GEM_PATHおよびGEM_HOMEのパスを取得します$rvm use ruby-1.9.3-p551。これを行うには、コマンドラインから実行します。次に、まだコマンドラインから、コマンドを使用してすべての環境設定を表示します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環境変数を設定します。これらの環境変数を、多数のプロファイルファイルのいずれかに設定します。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


どうやらGEM_HOMEとGEM_PATHはRVMに固有のものではありませんか?
barlop

2

.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などから他のユーザーがソースを入手できます。


1

@coteyrについて述べたように、を使用する場合はGEM_HOMEGEM_PATHを手動で設定しないでくださいrvm。実行してPATH環境変数を確認し、$ echo $PATH$ HOME / .rvm / binがその一部である場合は、端末がログインシェルとしてコマンドを実行していることを確認する必要があります。たとえば、Ubuntuマシンを使用している場合は、ターミナルを開いて、メニュー> [編集]> [プロファイル設定]> [コマンド]に移動し、[コマンドをログインシェルとして実行]を選択します。

これは、以前rvmから存在していたため、修正するのは簡単ではないと私が考える古い問題のようです。


1

移入のために$GEM_PATH私のシステム(Manjaro /アーチ)と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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.