Rbenv没有正确地重复并制作垫片

时间:2015-09-27 14:03:20

标签: ruby rubygems rvm rbenv

最重要的是,rbenv不会制造垫片。我已经用尽了可能出现问题的想法。经过几天将我的头撞在墙上修复但无济于事之后,我觉得是时候寻求帮助了。

我试图从RVM切换到rbenv,所以这显然是一个因素。任何想法/帮助都会很棒。

以下是发生的事情:

[09:38] ~ $ gem install pry
Fetching: pry-0.10.2.gem (100%)
Successfully installed pry-0.10.2
1 gem installed

[09:39] ~ $ rbenv rehash

[09:40] ~ $ pry
bash: pry: command not found

[09:40] ~ $ rbenv which pry
rbenv: pry: command not found

[09:40] ~ $ which pry
which: no pry in (/home/caveman/.rbenv/plugins/ruby-build/bin:/home/caveman/.rbenv/shims:/home/caveman/.rbenv/bin:/home/caveman/.rbenv/shims:/home/caveman/.rbenv/bin:/home/caveman/.rbenv/plugins/ruby-build/bin:/home/caveman/.rbenv/shims:/home/caveman/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)

[09:41] ~ $ ~/.gem/ruby/2.2.0/bin/pry 
[1] pry(main)> puts "I'm working now"
I'm working now

[09:43] ~ $ gem list | grep pry
pry (0.10.2)

这是我的宝石环境:

[09:44] ~ $ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.8
  - RUBY VERSION: 2.2.0 (2014-12-25 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/caveman/.gem/ruby/2.2.0
  - RUBY EXECUTABLE: /home/caveman/.rbenv/versions/2.2.0/bin/ruby
  - EXECUTABLE DIRECTORY: /home/caveman/.gem/ruby/2.2.0/bin
  - SPEC CACHE DIRECTORY: /home/caveman/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY:  /home/caveman/.rbenv/versions/2.2.0/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/caveman/.gem/ruby/2.2.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-document"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/caveman/.rbenv/versions/2.2.0/bin
     - /usr/lib/rbenv/libexec
     - /home/caveman/.rbenv/plugins/ruby-build/bin
     - /home/caveman/.rbenv/shims
     - /home/caveman/.rbenv/bin
     - /home/caveman/.rbenv/shims
     - /home/caveman/.rbenv/bin
     - /home/caveman/.rbenv/plugins/ruby-build/bin
     - /home/caveman/.rbenv/shims
     - /home/caveman/.rbenv/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/bin
     - /usr/lib/jvm/default/bin
     - /usr/bin/site_perl
     - /usr/bin/vendor_perl
     - /usr/bin/core_perl

这是我的.bashrc文件:

[09:46] ~ $ cat .bashrc
# If not running interactively, don't do anything
[[ $- != *i* ]] && return

# If I don't set this, gem reverts back to nonexistent RVM directory.
export GEM_HOME=$(ruby -e 'print Gem.user_dir')
export GEM_PATH=$(ruby -e 'print Gem.user_dir')

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

这是.bash_profile:

[09:52] ~ $ cat .bash_profile 

[[ -f ~/.bashrc ]] && . ~/.bashrc

source ~/.profile

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

1 个答案:

答案 0 :(得分:1)

我怀疑你的.bashrc是个问题。它不应该包含:

# If I don't set this, gem reverts back to nonexistent RVM directory.
export GEM_HOME=$(ruby -e 'print Gem.user_dir')
export GEM_PATH=$(ruby -e 'print Gem.user_dir')

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

在我的〜/ .bashrc,〜/ .profile和〜/ .bash_profile文件中,只有最后一个配置了rbenv:

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

这是在我安装rbenv时创建的,它与我使用rbenv的其他系统的设置相匹配,包括之前安装了RVM的一些系统。

你的双重路径分配看起来像罪魁祸首。将我的系统的PATH与您的PATH进行比较,gem env列出:

 - /Users/ttm/.rbenv/versions/2.2.3/bin
 - /Users/ttm/.rbenv/libexec
 - /Users/ttm/.rbenv/plugins/ruby-build/bin
 - /Users/ttm/.rbenv/plugins/rbenv-whatis/bin
 - /Users/ttm/.rbenv/plugins/rbenv-vars/bin
 - /Users/ttm/.rbenv/plugins/rbenv-use/bin
 - /Users/ttm/.rbenv/plugins/rbenv-update/bin
 - /Users/ttm/.rbenv/plugins/rbenv-update-rubies/bin
 - /Users/ttm/.rbenv/plugins/rbenv-gemset/bin
 - /Users/ttm/.rbenv/plugins/rbenv-env/bin
 - /Users/ttm/.rbenv/plugins/rbenv-each/bin
 - /Users/ttm/.rbenv/shims
 - /Users/ttm/.rbenv/bin

同样,我的which pry会返回:

/Users/ttm/.rbenv/shims/pry

使用rbenv的env plugin显示:

RBENV_VERSION=2.2.3
RBENV_GEMSET_ALREADY=yes
RBENV_ROOT=/Users/ttm/.rbenv
RBENV_HOOK_PATH=:/Users/ttm/.rbenv/rbenv.d:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks:/Users/ttm/.rbenv/plugins/rbenv-default-gems/etc/rbenv.d:/Users/ttm/.rbenv/plugins/rbenv-gemset/etc/rbenv.d:/Users/ttm/.rbenv/plugins/rbenv-readline/etc/rbenv.d:/Users/ttm/.rbenv/plugins/rbenv-vars/etc/rbenv.d
PATH=/Users/ttm/.rbenv/versions/2.2.3/bin:/Users/ttm/.rbenv/libexec:/Users/ttm/.rbenv/plugins/ruby-build/bin:/Users/ttm/.rbenv/plugins/rbenv-whatis/bin:/Users/ttm/.rbenv/plugins/rbenv-vars/bin:/Users/ttm/.rbenv/plugins/rbenv-use/bin:/Users/ttm/.rbenv/plugins/rbenv-update/bin:/Users/ttm/.rbenv/plugins/rbenv-update-rubies/bin:/Users/ttm/.rbenv/plugins/rbenv-gemset/bin:/Users/ttm/.rbenv/plugins/rbenv-env/bin:/Users/ttm/.rbenv/plugins/rbenv-each/bin:/Users/ttm/.rbenv/shims:/Users/ttm/.rbenv/bin:/Users/ttm/.pyenv/shims:/Users/ttm/.pyenv/bin:/Users/ttm/perl5/perlbrew/bin:/Users/ttm/perl5/perlbrew/perls/perl-5.18.1/bin:/Users/ttm/bin:/usr/local/mysql-5.6.16-osx10.7-x86_64/bin:/Users/ttm/libsmi/bin:/usr/local/git/bin:/usr/local/bin:/Library/PostgreSQL/9.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin
RBENV_SHELL=bash
RBENV_DIR=/Users/ttm
RUBYLIB=/Users/ttm/.rbenv/rbenv.d/exec/gem-rehash:

我会做以下步骤:

  1. 修改〜/ .bashrc和其他,删除任何引用rbenv和/或RVM的行。 RVM使用所有三个init文件,加上.zshrc,而rbenv似乎只触及〜/ .bash_profile。
  2. 关闭终端会话。重新打开它。
  3. 确认PATH不受所有对RVM和rbenv的引用。
  4. 按照Installation说明重新安装rbenv。它不会覆盖当前安装,而是将其更改重新安装到〜/ .bash_profile。
  5. 再次关闭终端会话并重新打开。
  6. 现在应该正确初始化rbenv。