[英]Install Latest Stable Version of Ruby Using rbenv
我想安裝rbenv可用的最新穩定版 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
是最高的xxx
版本。 換句話說,我需要自動將列表中以數字開頭且不以-something
結尾的最高條目替換為VERSION
。 從這個列表中,我需要2.2.2
。
我可以在我的 shell 腳本中放入什么來自動選擇命令rbenv install xxx
的最高xxx
版本?
編輯:由於尚未安裝 Ruby,因此解決方案必須使用 Bash 而不是 Ruby。
編輯 2:我想要 Ruby 的 MRI(主流)版本。
簡單的解決方案 (直接安裝最新的穩定版):
rbenv install $(rbenv install -l | grep -v - | tail -1)
說明:
rbenv install -l | grep -v - | tail -1
過濾掉所有包含連字符的版本-
這是所有非MRI版本和預發布的MRI版本。 然后選擇最后一個,保證最高,因為ruby-build輸出已按版本號升序排序。
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;}'
經過相當多的反復試驗后,我想出了一種從這個列表中獲取最新穩定版本的方法。 這並不完美,因為它只是抓住了正確的模式和它的最后一個版本,但它應該完成工作。 只要版本有序,它就會起作用。
這將產生2.2.2
rbenv install -l | grep -P "^ [[:digit:]]\.[[:digit:]]\.[[:digit:]]$" | tail -1
我們可以將結果插入到rbenv install
如下所示:
rbenv install $(rbenv install -l | grep -P "^ [[:digit:]]\.[[:digit:]]\.[[:digit:]]$" | tail -1)
我的答案與Anonymous的答案相似(但更短,因為我正在使用\\ d)。
rbenv install -l| grep -P "\s2.*(\.|\d)\d$" | tail -1
我想指定最新的jruby,這就是我使用“2”的原因,所以我可以用“jruby”代替2:
rbenv install -l| grep -P "\sjruby.*(\.|\d)\d$"|tail -1
你可以用其他字符串替換jruby以獲得不同類型的紅寶石,例如rbx,mruby。
首先應該使用rbenv安裝ruby-build以獲取最新版本的ruby ..請按照以下步驟操作:
brew reinstall --HEAD ruby-build
(如果rbenv已經安裝brew可能會通過一些錯誤然后繼續前進和簡單
brew unlink ruby-build
和 brew install --HEAD ruby-build
) brew upgrade
rbenv install <required latest version>
您可以為此使用xxenv-latest插件,該插件也適用於 nodeenv、pyenv 等。
你提到自動化; 這是我用來設置最新 Ruby 的完整命令列表:
# Install rbenv
brew install rbenv
# Initialize rbenv to run now
eval "$(rbenv init -)"
# Install xxenv-latest rbenv plugin
git clone https://github.com/momo-lab/xxenv-latest.git "$(rbenv root)"/plugins/xxenv-latest
# Install latest Ruby and set as global
rbenv latest install
rbenv latest global
我寧願在Ruby中比在bash中這樣做。
versions = `rbenv install -l`
versions.split("\s").select{|v| v.match( /^\d*\.\d*\.\d*$/ )}.last
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.