以下是为使用 Ubuntu 20.04 的非前端程序员准备的 rbenv 和 gem 的详细介绍,包含具体安装步骤和操作示例:
一、gem:Ruby 的包管理器
1. 是什么?
- gem 是 Ruby 的官方包管理工具,用于安装、管理和分发 Ruby 代码库(称为 Gem ),类似 Python 的
pip
或 Node.js 的npm
。 - 例如:通过
gem install rails
可以安装 Ruby on Rails 框架。
2. 核心功能
- 安装/卸载库 :从 RubyGems.org 仓库下载和管理 Gem。
- 版本控制 :支持指定 Gem 的版本(如
gem install rails -v 7.0.4
)。 - 依赖管理:自动处理 Gem 之间的依赖关系。
3. 常用命令
bash
# 安装 Gem(默认最新版本)
gem install <gem_name>
# 安装指定版本
gem install <gem_name> -v <version>
# 列出已安装的 Gem
gem list
# 更新 Gem
gem update <gem_name>
# 卸载 Gem
gem uninstall <gem_name>
4. Gemfile 与 Bundler
-
Bundler 是管理项目依赖的工具,通过
Gemfile
文件定义依赖项,确保不同环境的一致性。 -
示例
Gemfile
:rubysource 'https://rubygems.org' gem 'rails', '7.0.4' gem 'sqlite3', '~> 1.4'
-
Bundler 命令 :
bash# 安装所有依赖 bundle install # 更新依赖 bundle update
二、rbenv:Ruby 版本管理工具(Ubuntu 20.04 专用)
1. 是什么?
- rbenv 允许你在同一台机器上安装和切换多个 Ruby 版本,避免因系统 Ruby 版本过旧导致的问题。
- 例如:项目 A 使用 Ruby 3.2.2,项目 B 使用 Ruby 2.7.6。
2. Ubuntu 20.04 安装步骤
-
安装依赖(编译 Ruby 所需):
bashsudo apt update sudo apt install -y git curl autoconf bison build-essential libssl-dev libreadline-dev zlib1g-dev libyaml-dev
-
安装 rbenv 和 ruby-build:
bash# 克隆 rbenv 到用户目录 git clone https://github.com/rbenv/rbenv.git ~/.rbenv # 添加 rbenv 到 PATH 环境变量 echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc # 重启 Shell 或执行以下命令使配置生效 exec $SHELL # 安装 ruby-build 插件(用于编译 Ruby) git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
-
安装 Ruby 版本:
bash# 查看可安装的 Ruby 版本 rbenv install --list # 安装 Ruby 3.2.2 rbenv install 3.2.2 # 设置全局默认版本 rbenv global 3.2.2 # 验证安装 ruby -v # 应输出 "ruby 3.2.2..."
3. 常用命令
bash
# 设置当前目录的 Ruby 版本(创建 .ruby-version 文件)
rbenv local 3.2.2
# 查看已安装的 Ruby 版本
rbenv versions
# 卸载 Ruby 版本
rbenv uninstall 2.7.6
4. 与 gem 的关系
- rbenv 管理 Ruby 解释器版本 ,gem 管理 Ruby 库。
- 通过 rbenv 安装的 Ruby 版本,其 Gem 会存储在
~/.rbenv/versions/<ruby-version>/lib/ruby/gems
目录下,与系统 Ruby 完全隔离。
三、协作流程示例(Ubuntu 20.04)
-
创建新项目:
bashmkdir myapp && cd myapp # 设置当前项目使用 Ruby 3.2.2 rbenv local 3.2.2
-
初始化 Bundler:
bash# 生成 Gemfile bundle init # 编辑 Gemfile,添加依赖 echo 'gem "rails", "7.0.4"' >> Gemfile
-
安装依赖:
bashbundle install
-
运行项目:
bash# 使用 bundle exec 确保加载项目依赖的 Gem bundle exec rails server
四、常见问题与解决
1. 安装 Ruby 时编译失败
-
原因:缺少依赖库。
-
解决 :确保已安装所有依赖:
bashsudo apt install -y libssl-dev libreadline-dev zlib1g-dev
2. gem 安装权限错误
- 现象 :
You don't have write permissions...
- 原因 :误用
sudo gem install
。 - 解决 :使用 rbenv 后,所有 Gem 应安装在用户目录,无需
sudo
。
3. rbenv 命令未找到
-
原因:Shell 配置未生效。
-
解决 :
bash# 重新加载配置 source ~/.bashrc # 或重启终端
五、总结
- rbenv:管理多个 Ruby 版本,避免系统版本冲突。
- gem:安装和管理 Ruby 库(Gem)。
- Bundler:确保项目依赖的一致性。
在 Ubuntu 20.04 上,推荐使用 rbenv 替代系统自带的 Ruby ,既能自由切换版本,又无需 sudo
权限。这种组合是 Ruby 开发的黄金标准,尤其适合同时维护多个项目的场景!