rt
问题没有看懂,我理解为:
如果不需要用带有 C 扩展的 Ruby,在 Windows 上可以下载 without-devkit
版本的 RubyInstaller,大小仅有 14MB,不包含你题中所说的构建工具。
另外:rbenv for Windows 也是是用这个 without-devkit
的版本来下载最新的 Ruby,所有 Ruby 共用一套工具链。可能满足你所说的“下载即用” (一个命令即用)。
我的意思其实是,Node 可以直接下载一个压缩文件,wget 下载、解压之后就能用了,非常方便。为什么 Ruby 不选择这种方式来分发代码。
Windows 上的 RubyInstaller 也提供了 7z
压缩的“绿色版”,不用安装,直接打开就可以用。和你说的 wget一下,解压,直接用
的流程是一样的。
在 https://rubyinstaller.org/downloads/ Other Useful Downloads
这里。
其实 rbenv for Windows 每次使用 rbenv install x.x
下载的也正是这种 7zip
文件。
类 Unix 系统上不知道,似乎没有。
我猜想原因可能是反过来的:因为 Node 构建起来比 Ruby 麻烦(也更慢)
按道理来说,自己从源码构建是更好的,可以避免安装后的很多问题。但 Node 依赖的 v8 那一整套很庞大,还是 C++ 写的,编译很慢。而 Ruby 编译起来比较快,所以习惯从源码编译。pyenv 也是从源码编译的
pyenv 就是从 rbenv 复刻(fork)过来的,所以同样也采取了编译的方法来安装。
实际上,如果需要这种多版本控制,一般都会采用自己编译的方式。因为,较新版本的 Ruby/Python 构建往往不会存在于任何 Linux 发行版包管理器之中,即使 Arch Linux 的打包者也没那么快能跟上(而且还经常打包的有问题)。有的时候,我们还会有回到某个旧的版本的需求,以查看是否在特定的语言版本中,代码存在问题。而这些旧版本,上游也并不会提供。
所以最好的方式,还是通过用户自己的环境直接编译源代码,这样便能够以最快速度获得最新的 Ruby/Python. 通过 rbenv/pyenv 用户可以从过去的任何版本一致跟踪到最新版本,灵活度很高。
注:现在 Windows 上使用的 pyenv-win 是从 rbenv-win 复刻(fork)出来的。后者 rbenv-win 是用 vb 写的。Ruby 界的很多东西都被重复利用给其他生态了。