我需要运行2.5.3。我使用brew管理我的ruby安装(因为我无法使rvm在我的机器上工作)。当我跑步时
$ruby -v
我明白了
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
但是,当我尝试使用
更新它时brew upgrade ruby
我知道
Error: ruby 2.6.1 already installed
为什么我真正安装的红宝石版本如此不一致?
答案 0 :(得分:3)
您应该使用Ruby版本管理器来管理Ruby的多个版本。我更喜欢使用rbenv。以下是在Mac上安装它的步骤(详细说明了正在执行的操作和原因;如果您想要快捷方式,请尝试依次运行所有命令,但我仍然坚持要求您通读所有步骤)。
rbenv
在继续实际安装之前,请记住以下几点:
rbenv
本身不包含安装ruby版本的功能。它仅更改每个目录的ruby版本。要安装红宝石,您需要安装 ruby-build 工具(这是rbenv项目的一部分)。 chruby也是如此,它使用另一种工具构建红宝石。ruby-build
必须作为rbenv的插件安装。运行以下命令,将rbenv repo克隆到主目录中的.rbenv
目录中。
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
您的系统仍然不知道rbenv在哪里。通过运行以下命令将其添加到您的路径:
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
要初始化rbenv以便在更改目录时可以帮助您更改红宝石,请运行以下命令:
~/.rbenv/bin/rbenv init
这应该告诉您以下信息:
# Load rbenv automatically by appending
# the following to ~/.bash_profile:
eval "$(rbenv init -)"
因此运行此:
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
到此,应该安装rbenv。在命令行上运行rbenv
时,应该得到如下内容:
$ rbenv
rbenv 1.1.1-39-g59785f6
Usage: rbenv <command> [<args>]
Some useful rbenv commands are:
commands List all available rbenv commands
local Set or show the local application-specific Ruby version
global Set or show the global Ruby version
shell Set or show the shell-specific Ruby version
rehash Rehash rbenv shims (run this after installing executables)
version Show the current Ruby version and its origin
versions List all Ruby versions available to rbenv
which Display the full path to an executable
whence List all Ruby versions that contain the given executable
See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme
注意:如果收到未安装rbenv的警告,请运行source ~/.bash_profile
。这将重新运行~/.bash_profile
脚本并在您的路径中获取rbenv。之后,您应该可以顺利运行rbenv
。
请注意,rbenv尚未提供安装或卸载红宝石的选项。为此,我们需要安装 ruby-build 。
我们需要将ruby-build软件包添加为rbenv插件,以便我们可以键入rbenv install <ruby version>
来安装rubies。您所需要做的就是创建plugins目录,并在plugins目录中检出Ruby rebuild的git repo。运行以下命令:
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
在终端上不带任何参数的情况下运行rbenv现在应该显示可用的安装和卸载命令。像这样:
$ rbenv
rbenv 1.1.1-39-g59785f6
Usage: rbenv <command> [<args>]
Some useful rbenv commands are:
commands List all available rbenv commands
local Set or show the local application-specific Ruby version
global Set or show the global Ruby version
shell Set or show the shell-specific Ruby version
install Install a Ruby version using ruby-build
uninstall Uninstall a specific Ruby version
rehash Rehash rbenv shims (run this after installing executables)
version Show the current Ruby version and its origin
versions List all Ruby versions available to rbenv
which Display the full path to an executable
whence List all Ruby versions that contain the given executable
See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme
如果看到该输出,则说明rbenv已正确安装。
要安装ruby 2.5.3,您可以运行(等待,尚未运行):
rbenv install 2.5.3
它应该输出几行,花一些时间,然后告诉您已安装2.5.3版。但是,存在一个问题-如果安装失败,尤其是在编译过程中(有时),则终端卡住,终端上没有输出。它似乎已经安装了很长时间(永远)。要获取有关正在发生的事情的更多信息,请运行以下命令:
rbenv install -f -v 2.5.3
-f
参数告诉rbenv强制安装给定的版本。因此,如果已安装,则rbenv将重新安装(基本上覆盖)给定的版本。因此,如果安装失败,-f
将确保安装。
-v
参数告诉rbenv输出详细消息。因此,ruby-build所做的一切(包括编译过程)都会显示给您。此处不要担心 compilation 一词。无论成功与否,它都能正常编译而不会产生麻烦,并且不会更改您的系统ruby(在Linux上安装sudo apt install ruby
或在macOS上默认安装的系统)。
安装成功后,您可以运行以下命令来检查安装了哪些版本(下面的代码段中包含输出):
$ rbenv versions
system
* 2.5.3 (set by /home/ubuntu/.rbenv/version)
注意:在Mac上,新安装的红宝石将具有不同的路径。
前面带有*
的那个是当前活动的那个。如果您运行which ruby
,则应该获得一条带有红宝石垫片的路径。如果您感到好奇,请阅读rbenv documentation to know what shims are,尽管您不必担心它们。
$ which ruby
/home/ubuntu/.rbenv/shims/ruby
rbenv是一件很酷的事情,但是每次都继续写rbenv shell 2.5.3
和rbenv shell 2.4.5
是一个问题。相反,您应该为该目录设置一个ruby版本,而不必理会rbenv。
您可以只创建一个名为.ruby-version
的文件,其中包含一行-您要用于此目录(和子目录)中所有ruby脚本的ruby版本号。只需cd到所需目录并运行:
echo "2.5.3" > .ruby-version
该目录和子目录中的所有ruby脚本都将使用2.5.3版。
答案 1 :(得分:0)
我要感谢Vaibhav的翔实回答。我尚未尝试安装rbenv,但我绝对会尝试的。现在,我可以通过不在我的gem文件中指定红宝石版本来解决此问题。这是一个短期解决方法,但确实有效!