我想安装里本夫提供的最新稳定版本的Ruby。rbenv本身的这个特性是不会发生。
当我在shell中运行命令rbenv install -l时,我会得到一长串可用版本的列表。列表包含所有类型的条目。以下是展示格式和多样性的部分清单:
$ rbenv install -l
Available versions:
2.0.0-p643
2.0.0-p645
2.1.0-dev
2.1.0-preview1
2.1.0-preview2
2.1.0-rc1
2.1.4
2.1.5
2.1.6
2.2.0-dev
2.2.0-preview1
2.2.0-preview2
2.2.0-rc1
2.2.0
2.2.1
2.2.2
2.3.0-dev
jruby-1.7.19
jruby-1.7.20
jruby-9.0.0.0-dev
jruby-9.0.0.0+graal-dev
jruby-9.0.0.0.pre1
jruby-9.0.0.0.pre2
maglev-1.0.0
maglev-1.1.0-dev
maglev-2.0.0-dev
mruby-dev
mruby-1.0.0
mruby-1.1.0
rbx-2.5.2
rbx-2.5.3
ree-1.8.7-2011.12
ree-1.8.7-2012.01
ree-1.8.7-2012.02
topaz-dev我的目标是在shell脚本中自动化命令rbenv install VERSION,其中VERSION是最高的x.x.x发布版本。换句话说,我需要自动替换列表中以数字开头且不以-something结束到VERSION的最高条目。从这个列表中,我需要2.2.2。
如何在shell脚本中自动选择命令x.x.x中最高的rbenv install x.x.x版本?
编辑:由于还没有安装,所以解决方案必须使用Bash,而不是。
编辑2:我想要MRI (主流)版本的。
发布于 2015-05-12 06:08:17
rbenv install -l | awk -F '.' '
/^[[:space:]]*[0-9]+\.[0-9]+\.[0-9]+[[:space:]]*$/ {
if ( ($1 * 100 + $2) * 100 + $3 > Max ) {
Max = ($1 * 100 + $2) * 100 + $3
Version=$0
}
}
END { print Version }'如果对列表进行排序,一个简单的sed (posix版本)就足够了。
rbenv install -l | sed -n '/^[[:space:]]*[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}[[:space:]]*$/ h;${g;p;}'发布于 2015-05-12 13:07:11
简单解决方案(直接安装最新稳定版本):
rbenv install $(rbenv install -l | grep -v - | tail -1)解释:
rbenv install -l | grep -v - | tail -1过滤掉所有包含连字符-的版本,这是所有非MRI版本和预发布的MRI版本。然后选择最后一个,保证是最高的,因为ruby构建输出已经按照版本号升序排序。
发布于 2019-04-19 21:08:29
在使用rbenv安装时,应该首先更新ruby构建,以获得最新版本的ruby。遵循以下步骤:
brew reinstall --HEAD ruby-build (如果rbenv已经安装,brew可能会通过一些错误,然后继续前进,只是brew unlink ruby-build和brew install --HEAD ruby-build )
brew upgraderbenv install <required latest version>。在macOS 10.13.6工作
https://stackoverflow.com/questions/30179484
复制相似问题