如何设置Ruby GEM_HOME和GEM_PATH


10

我是Linux的NOVICE用户,并且使用Linux Mint 17.1

最近3天,我已为该问题重新安装了Linux Mint 20,但无法修复

我正在尝试使用rvm在rails上安装ruby,发生的事情是,如果启动新的Linux安装,并尝试在关闭终端会话后成功安装的一个终端会话中成功安装gems和ruby以及其他东西,那么我将无法获得这些gems 。

在过去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. 如何设置路径
  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

@mohsen pahlevanzades先生,我想问一下删除这两行的意义是什么,如果您不介意我说的话,问候
Amjad 2015年

如果我没记错的话,您写了问候或谢谢您,
PersianGulf 2015年

Answers:


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看看是否可行。

也可能是您尚未构建宝石集。不要使用rvm和sudo。当安装在您的帐户ant而非系统范围内时,rvm效果最佳。


您也可以添加source ~/.rvm/scripts/rvm到您的文件~/.bashrc,以确保每次启动新的Shell时都将其加载。
Niel de Wet

2

这是我学到的东西,以及如何解决GEM_HOME和GEM_PATH环境变量未设置错误这一看似常见的问题。


背景

RVM安装应该为每个已设置的RVM创建GEM_HOME和GEM_PATH env var,并且这样做。但是显然存在一个错误,在某些情况下,环境变量只是临时设置的,要再次设置它们,则必须在命令行中进行设置。我找到了一种解决方法,可以使RVM的env vars持久存在。

解决方法

  1. 在RVM中找到活动的Ruby版本:在生产服务器上,转到您的应用目录,然后输入$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。然后仍然在comman行中使用命令显示所有环境设置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:

    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_PATHrvm。如果您通过运行PATH环境变量来检查$ echo $PATH它,并且$ HOME / .rvm / bin是它的一部分,那么您需要确保终端将命令作为登录shell运行。例如,如果您在Ubuntu计算机上,则打开终端,然后转到:菜单>编辑>配置文件首选项>命令,然后选择“将命令作为登录Shell运行”

rvm我认为这似乎是一个老问题,因为它已经存在一段时间了,所以解决起来并不容易。


1

为了填充$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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.