【问题标题】:Need help switching from RVM to RBENV需要帮助从 RVM 切换到 RBENV
【发布时间】:2016-04-03 04:57:00
【问题描述】:

好的,所以我内爆 RVM 并切换到 rbenv 但现在我认为我在 gem 路径方面遇到了各种问题。我认为我的系统的某些部分仍然认为应该使用 RVM 找到 gem,它把一切都搞砸了。我不擅长解决这样的配置问题,因此非常感谢您的帮助。

这是我的 $PATH:

/Users/home/.rbenv/shims:/Users/home/.rbenv/bin:/Users/home/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/home/.rvm/bin

如您所见,.rvm 仍在 $PATH 中,这是我的问题吗?我该如何解决?

这是我的 gem env(这是我在手动移动一些目录以更好地匹配路径之前得到的,现在我得到了同样的错误(下) 就像我运行 ruby​​ 或 bundle 时一样):

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.2 (2014-05-08 patchlevel 95) [x86_64-darwin15.0]
  - INSTALLATION DIRECTORY: /Users/home/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /Users/home/.rbenv/versions/2.1.2/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/home/.rbenv/versions/2.1.2/bin
  - SPEC CACHE DIRECTORY: /Users/home/.gem/ruby/2.1.0
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-15
  - GEM PATHS:
     - /Users/home/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
     - /Users/home/.rbenv/versions/2.1.2/bin
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/home/.rbenv/versions/2.1.2/bin
     - /usr/local/Cellar/rbenv/0.4.0/libexec
     - /Users/home/.rbenv/shims
     - /Users/home/.rbenv/bin
     - /Users/home/.rbenv/shims
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Users/home/.rvm/bin

我当前的 ruby​​ 版本是 2.1.2,它仍在研究 2.1.0。

这是我的 .bash_profile

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile

export PATH="$HOME/.rbenv/bin:$PATH"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

这是我的个人资料

eval "$(rbenv init -)"

当我运行 ruby​​ 或 bundle 命令时,我得到了这个错误:

<internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
    from <internal:gem_prelude>:1:in `<compiled>'

我对路径做了一些修改并手动重新定位了 gem 目录,我认为我做的弊大于利。谢谢您的帮助。如果您不知道答案,有人可以评论完全擦洗 ruby​​ 和 gem 路径设置的最佳方法,以便我可以重新安装?我只是卸载 rbenv 吗?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    我的 RVM 内爆脚本在这里 -- 你可以随意编辑。

    https://github.com/sixarm/rvm-implode-systemwide-danger

    该脚本在系统范围内会导致 RVM 内爆,并且很危险。该脚本将查找并销毁 RVM 安装、rvm gem、.rvmrc 文件,然后搜索您的整个系统以查找延迟文件和引用。

    非常欢迎提出建议和拉取请求。我是作者。

    整个脚本在下面复制/粘贴以供参考。上面的链接可能会更好,因为它会有任何更新、更改、改进等。

    #!/bin/sh
    #
    # Uninstall RVM (Ruby Version Manager) systemwide:
    # THIS IS DANGEROUS.
    #
    # This script tries to eliminate RVM everywhere on the system,
    # by doing these steps:
    #
    #   * Run `rvm implode`
    #   * Delete all known RVM-related files everywhere on the system.
    #   * Delete all users' home directory `.rvm` directories and `.rvmrc` files.
    #   * Uninstall all known RVM gems.
    #   * Search the system for potential lingering items and print them.
    #
    # ## Use at your own risk
    #
    # This script is not advanced:
    #
    #   * it does not do any error checking
    #   * it does not ensure anything worked
    #   * it does not guarantee success
    #
    # If it doesn't work for you, please let us know and we'll improve it.
    #
    # We welcome feedback, patches, and pull requests.
    #
    # ## Warnings
    #
    # Some of the script lines may report missing directories.
    #
    # For example, a Mac system typically has a /Users/ directory,
    # whereas a Linux system typically has a /home/ directory.
    # You can delete the lines that you don't need, if you like.
    #
    # If rvm implode gives errors like this loop:
    #
    #    line 72: /usr/local/rvm/scripts/rvm: No such file or directory
    #
    # then the rvm setup is bonked and we can delete the rvm script
    # by hand then run this script again; rvm implode won't work,
    # but the rest of the script will do a decent job of deleting
    # any lingering rvm files and reporting any remainders.
    #
    # Command: rvm-implode-systemwide-danger
    # Version: 2.0.0
    # Created: 2011-08-22
    # Updated: 2015-01-25
    # License: GPL
    # Contact: Joel Parker Henderson (joel@joelparkerhenderson.com)
    ##
    set -euf
    out () { printf %s\\n "$*" ; }
    
    out "rvm implode"
    rvm implode
    
    out "remove rvm files from system-wide areas"
    sudo rm -rf /usr/local/bin/rvm
    sudo rm -rf /usr/local/rvm
    sudo rm -rf /etc/rvmrc
    sudo rm -rf /etc/profile.d/rvm.sh
    
    out "remove rvm files from all likely user areas"
    sudo rm -rf /home/*/.rvm
    sudo rm -rf /home/*/.rvmrc
    sudo rm -rf /Users/*/.rvm
    sudo rm -rf /Users/*/.rvmrc
    sudo rm -rf $HOME/.rvm
    sudo rm -rf $HOME/.rvmrc
    sudo rm -rf $(dirname $HOME)/*/.rvm
    sudo rm -rf $(dirname $HOME)/*/.rvmrc
    
    out "uninstall rvm gem as current user and with sudo"
    gem uninstall -a -q rvm
    sudo gem uninstall -a -q rvm
    
    out "delete rvm group"
    sudo /usr/sbin/groupdel rvm
    
    out "try to find any remaining .rvmrc files, in case you want to delete them"
    sudo find -L / -name .rvmrc
    
    out "try to find rvm text in configuration files, in case you want to edit thme"
    sudo find -L / -type f | grep "\(bash_login\|bash_profile\|bashrc\|profile\|zshenv\|zshrc\|zlogin\|zlogout\|zprofile\)$" | xargs -I{} grep -Iil "rvm" {}
    

    【讨论】:

      【解决方案2】:

      确保您正在检查所有“rc”文件。这包括~/.bashrc~/bash_login(如果存在)。

      使用像 grep 这样的工具可以帮助您找到它们。

      grep 'rvm' -l ./.* 可能是为了获取任何对 rvm 的引用可能在其中的文件名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-20
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 2016-08-05
        • 2011-06-01
        • 1970-01-01
        • 2016-02-07
        相关资源
        最近更新 更多