RubyInstaller:Windows上的Ruby构建工具集
RubyInstaller是一个开源项目,专门为Windows系统提供Ruby解释器的构建工具和开发环境。该项目通过Rake构建配方来简化Ruby在Windows平台上的编译和部署过程。
项目概述
RubyInstaller采用三条款修改版BSD许可证,旨在为开发者提供一个开发沙箱环境,使用免费的MinGW工具链来编译Ruby及其组件。该项目特别适合需要在Windows系统上从源代码构建Ruby的开发人员。
注意:本项目主要支持Ruby 2.3及更早版本。对于Ruby 2.4及更新版本,请使用RubyInstaller2项目。
核心功能特性
1. 多版本Ruby支持
RubyInstaller支持构建多个Ruby版本:
- Ruby 1.8.7(默认版本)
- Ruby 1.9.2
- Ruby 2.0.0
- Ruby 2.1.x
2. DevKit开发工具包
项目提供DevKit工具包,包含:
- 编译器和构建系统
- MSYS/MinGW/TDM工具链
- 方便的安装辅助脚本
- 支持多种编译器版本配置
3. 灵活的构建配置
支持多种构建选项:
- 从Subversion仓库检出最新代码构建
- 使用本地源代码构建
- 支持兼容模式构建旧版本
- 可配置不同的编译器工具链
项目结构
RubyInstaller采用模块化的Rake配方结构:
recipes/
├── compiler/ # 编译器配置和下载
├── dependencies/ # 依赖库管理(zlib、openssl等)
├── devkit/ # DevKit工具包构建
├── extract_utils/ # 压缩包解压工具
├── interpreter/ # Ruby解释器构建
├── packager/ # Windows安装包生成
└── tools/ # 附加工具(RubyGems、文档等)
快速开始
基本构建命令
确保网络连接正常,打开命令提示符,进入项目根目录,执行以下命令之一:
rake # 构建MRI 1.8.7
rake ruby19 # 构建MRI 1.9.2
rake ruby20 # 构建MRI 2.0.0
rake ruby21 # 构建MRI 2.1.x
DevKit构建示例
rake devkit # 构建Installer(TDM 4.5.2)
rake devkit DKVER=tdm-32-4.6.1 # 构建指定版本的Installer
rake devkit 7Z=1 # 构建Installer和7-Zip压缩包
rake devkit SFX=1 # 构建Installer和自解压包
支持的编译器工具链
RubyInstaller支持多种编译器配置:
| 编译器类型 | 支持的版本 |
|---|---|
| tdm | tdm-32-4.7.1, tdm-32-4.6.1, tdm-64-4.7.1等 |
| mingw | mingw-32-4.6.2, mingw-32-3.4.5 |
| mingw64 | mingw64-32-4.7.2, mingw64-64-4.7.2 |
| mingwbuilds | mingwbuilds-32-4.7.3, mingwbuilds-64-4.7.3 |
系统要求
要使用RubyInstaller,您需要:
- Ruby 1.9.3或更高版本(mswin32或mingw32实现)
- Zlib扩展和DLL(zlib1.dll)在PATH中可用
- 用于构建Windows安装包的Innosetup 5.4.2
配置自定义化
项目配置文件位于config/目录下,您可以通过创建override/build_config.rb文件来覆盖默认配置。主要的配置文件包括:
config/ruby_installer.rb- Ruby解释器配置config/devkit.rb- DevKit工具包配置config/compilers/- 编译器特定配置
使用场景
RubyInstaller特别适用于以下场景:
- Windows Ruby开发:为Windows平台构建定制化的Ruby环境
- 多版本测试:在同一系统上构建和测试不同Ruby版本
- 扩展开发:为Ruby gems开发Windows原生扩展
- 教育研究:学习和研究Ruby解释器的构建过程
注意事项
- 避免在包含空格的路径中运行此项目
- MSYS环境对MinGW的/etc/fstab挂载有问题
- 对于Ruby 2.0和2.1版本,需要使用特定版本的DevKit
通过RubyInstaller,Windows开发者可以更轻松地构建和管理Ruby开发环境,专注于代码开发而不是环境配置问题。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



