从 RVM 切换到 rbenv 有一段时间了,一直用着自己写的小脚本安装管理。最近在国内服务器上使用时,发现 rbenv 和 RVM 都卡死安装不了,这才意识到,我的脚本其实完全没用,而是我的校园网可以直接访问。。。国内服务器上用上 Ruby3 真是难上加难。
Ruby China 的 wiki 提到的关于 rbenv 使用镜像的方法已经失效了 (@huacnlee),环境变量RUBY_BUILD_MIRROR_URL
其实一直都对国内用户无用 (见issue) . 很多人在这上面做了努力,但是总会或多或少的使用到外网,比如@andor_chen的这个 Github 仓库 , 其实我的服务器连 Github 仓库都 Pull 不下来。。。
值得庆幸的是,在 10 天前,hsbt 在 ruby-build
中合并了国内开发者 uzxmx 的pull request 添加了新的环境变量 RUBY_BUILD_MIRROR_PACKAGE_URL
,这个可以用来直接指定下载的链接,我利用这点 hack 了一下简化了安装 Ruby 的过程。
WARNING: 经过实验,发现
RUBY_BUILD_MIRROR_PACKAGE_URL
和RUBY_BUILD_MIRROR_URL
会起冲突,不要再使用后者了
虽然很多人可以直接访问外网,但是还是存在许多机器没有这个条件。于是我完善了一整套国内安装卸载脚本,迈向 Ruby3, 每一个人都不能少。
rbenv
(plus ruby-build
) 国内安装脚本,保证不需要任何外网,依然可以体验到最新的 Ruby. 其中 ruby-build 由 Gitee 官方镜像管理,每天更新,这是管理 Ruby 版本的真正仓库,所以不用担心更新不及时。
支持 Bash, Zsh 暂不支持 Fish, PowerShell
# 除了rbenv,额外添加了三个命令
# 1. `rbenv update`
# 2. `rbenv cninstall`
# 3. `rbenv sudo`
# 当有新Ruby版本出现时,使用rbenv-update来同时更新 rbenv 和 ruby-build 插件
rbenv update
# 查看支持的Ruby版本
rbenv install -l 或 -L
# 此命令自动从Ruby China提供的镜像上下载某指定版本的Rub,y并接着运行编译等过程
# 该命令用来替换常见的 rbenv install 3.0.0-preview2
rbenv cninstall 3.0.0-preview2
# 新添加了rbenv-sudo命令
# 没有此命令时无法 sudo rails s -p 81 等需要更高权限的操作,这是RVM和rbenv共同的问题
# 使用此命令来替换 sudo 如:
rbenv sudo rails s -p 81
使用前后对比如图:
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/rbenv-cn/raw/main/tool/install.sh)"
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/rbenv-cn/raw/main/tool/uninstall.sh)"