【问题标题】:How configure bash environment with rbenv?如何使用 rbenv 配置 bash 环境?
【发布时间】:2016-10-09 02:59:50
【问题描述】:

我实际上正在努力在不是最新的服务器(Ubuntu 10.04.2 LTS)上维护一个 Ruby 应用程序。 RVM 是全球安装的,我试图在我的主目录中本地获取最新的 ruby​​ 版本,但没有任何成功。现在我正在尝试使用 rbenv。

我刚刚安装了带有 rbenv 和 ruby​​-build 的 Ruby 2.3.1(作为 rbenv 插件)。 安装工作完美,但没有使用。

安装(简单的部分):

$ rbenv install 2.3.1
Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1...
Installed ruby-2.3.1 to /home/atlantic/.rbenv/versions/2.3.1

我已经像他们说的那样更新了 .bash_profile:

$ cat .bash_profile 
# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

但是当我想检查环境时,很多环境参数使用全局路径(如 GEM PATHS、EXECUTABLE DIRECTORY、INSTALLATION DIRECTORY、...):

$ gem env 
RubyGems Environment:
  - RUBYGEMS VERSION: 2.5.1
  - RUBY VERSION: 2.3.1 (2016-04-26 patchlevel 112) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.0.0-p247
  - USER INSTALLATION DIRECTORY: /home/atlantic/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /home/atlantic/.rbenv/versions/2.3.1/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.0.0-p247/bin
  - SPEC CACHE DIRECTORY: /home/atlantic/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/atlantic/.rbenv/versions/2.3.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.0.0-p247
     - /usr/local/rvm/gems/ruby-2.0.0-p247@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/atlantic/.rbenv/versions/2.3.1/bin
     - /home/atlantic/.rbenv/libexec
     - /home/atlantic/.rbenv/plugins/ruby-build/bin
     - /home/atlantic/.rbenv/shims
     - /home/atlantic/.rbenv/bin
     - /usr/local/rvm/gems/ruby-2.0.0-p247/bin
     - /usr/local/rvm/gems/ruby-2.0.0-p247@global/bin
     - /usr/local/rvm/rubies/ruby-2.0.0-p247/bin
     - /usr/local/rvm/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games

当我查看 env 时,有很多针对全局 ruby​​ 安装的 env 变量。我不知道我们从哪里设置这些变量,但这不是我想要的值:

$ env |grep -i ruby
GEM_HOME=/usr/local/rvm/gems/ruby-2.0.0-p247
IRBRC=/usr/local/rvm/rubies/ruby-2.0.0-p247/.irbrc
MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-2.0.0-p247
PATH=/home/atlantic/.rbenv/shims:/home/atlantic/.rbenv/bin:/usr/local/rvm/gems/ruby-2.0.0-p247/bin:/usr/local/rvm/gems/ruby-2.0.0-p247@global/bin:/usr/local/rvm/rubies/ruby-2.0.0-p247/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
GEM_PATH=/usr/local/rvm/gems/ruby-2.0.0-p247:/usr/local/rvm/gems/ruby-2.0.0-p247@global
RUBY_VERSION=ruby-2.0.0-p247

rbenv ruby​​ 安装永远不会出现在这些变量上。 我是否有命令(如 rbenv init-env-variables)来启动正确配置我的 ruby​​ 环境?

感谢您的支持, 大卫

【问题讨论】:

  • 你记得source ~/.bash_profile 吗?还要检查您的 .bashrc 并查看 RVM 是否添加了任何内容。您的所有 gem 路径仍然指向 RVM 安装。
  • 我发现 /etc/profile.d/rvm.sh 定义了所有这些变量。在执行 rbenv init 之前是否取消设置所有变量?有什么建议吗?

标签: ruby ubuntu rbenv


【解决方案1】:

运行rvm implode --force

这将删除 rvm/ 目录以及其中构建的所有 rubies。

运行gem uninstall rvm

检查 .bashrc.profile.bash_profile 并删除对 RVM 的所有引用。应该是这样的

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

从以下位置移除 RVM

rm -rf /usr/local/rvm
sudo rm /etc/profile.d/rvm.sh
sudo rm /etc/rvmrc

/etc/profile 中删除这些行(如果存在)

source /etc/profile.d/sm.sh
source /etc/profile.d/rvm.sh

使用source 重新加载您的终端并重新启动 rbenv 安装过程。

【讨论】:

  • 我完全同意你的观点,但我在这台服务器上没有 root/sudo 访问权限。
【解决方案2】:

我已手动更新文件 .bash_profile 以取消设置与 rvm 一起使用的所有变量环境,现在它可以完美运行:

$ cat /home/atlantic/.bash_profile 
# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

unset rvm_bin_path
unset GEM_HOME
unset IRBRC
unset MY_RUBY_HOME
unset rvm_path
unset rvm_prefix
unset rvm_version
unset GEM_PATH
unset RUBY_VERSION


export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

结果:

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.5.1
  - RUBY VERSION: 2.3.1 (2016-04-26 patchlevel 112) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/atlantic/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0
  - USER INSTALLATION DIRECTORY: /home/atlantic/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /home/atlantic/.rbenv/versions/2.3.1/bin/ruby
  - EXECUTABLE DIRECTORY: /home/atlantic/.rbenv/versions/2.3.1/bin
  - SPEC CACHE DIRECTORY: /home/atlantic/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/atlantic/.rbenv/versions/2.3.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/atlantic/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0
     - /home/atlantic/.gem/ruby/2.3.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/atlantic/.rbenv/versions/2.3.1/bin
     - /home/atlantic/.rbenv/libexec
     - /home/atlantic/.rbenv/plugins/ruby-build/bin
     - /home/atlantic/.rbenv/shims
     - /home/atlantic/.rbenv/bin
     - /usr/local/rvm/gems/ruby-2.0.0-p247/bin
     - /usr/local/rvm/gems/ruby-2.0.0-p247@global/bin
     - /usr/local/rvm/rubies/ruby-2.0.0-p247/bin
     - /usr/local/rvm/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games

感谢您的建议和帮助。 大卫。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2018-09-20
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    相关资源
    最近更新 更多