Total Pageviews

Monday, 26 September 2016

安装Ruby的种种方法

可以使用多种工具安装 Ruby。本页介绍如何使用主流的包管理系统和第三方工具管理和安装 Ruby,以及如何通过源码编译安装。

选择安装方式

安装 Ruby 的方式有多种:
  • 如果使用的是类 UNIX 操作系统,使用系统的包管理器是最简单的安装方式。但是,包管理器中的 Ruby 版本通常都不是最新的。
  • 安装工具能够安装指定的一个或多个 Ruby 版本。有针对 Windows 的安装包。
  • 管理工具能帮助你在系统中安装的多个 Ruby 版本之间切换。
  • 最后,也可以通过源码编译安装 Ruby
下面概述针对不同需求和不同平台的安装方式。

包管理系统

如果不能自己编译 Ruby,也不想使用第三方工具,可以使用系统中的包管理器安装 Ruby。
许多 Ruby 社区的成员强烈建议,应该使用第三方工具来安装 Ruby,不要用系统的包管理器。详细的优缺点超出了本页的讨论范畴,基本原因是大多数系统包管理器里的 Ruby 版本比较老。如果想使用最新的 Ruby 版本,要确保包的名称正确,或者使用后面列出的工具。

apt(Debian 或 Ubuntu)

Debian GNU/Linux 和 Ubuntu 使用 apt 包管理器。用法如下:


$ sudo apt-get install ruby-full
撰写本文时,在 Debian 和 Ubuntu 下,ruby-full 包提供的是老旧的 Ruby 1.9.3。

yum(CentOS、Fedora 或 RHEL)

CentOS、Fedora 和 RHEL 使用 yum 包管理器。用法如下:


$ sudo yum install ruby
安装的 Ruby 版本通常是发行版发行日能打包的最新版。

portage(Gentoo)

Gentoo 使用 portage 包管理器。


$ sudo emerge dev-lang/ruby
一般来说,这将安装 1.9 和 2.0 版本,不过还有更多版本可供安装。如果想安装指定的版本,要在 make.conf 文件中设置 RUBY_TARGETS。详见 Gentoo Ruby Project 网站

pacman(Arch Linux)

Arch Linux 使用 pacman 包管理器。要安装 Ruby,只需要执行下述命令:


$ sudo pacman -S ruby
这将安装最新的 Ruby 稳定版。

Homebrew(OS X)

OS X El Capitan、Yosemite 和 Mavericks 内置了 Ruby 2.0。OS X Mountain Lion、Lion 和 Snow Leopard 内置了 Ruby 1.8.7。
许多 OS X 用户使用 Homebrew 作为包管理器。用 Homebrew 能够非常简单地获取到最新版的 Ruby:


$ brew install ruby
这将安装最新版的 Ruby。

Solaris 和 OpenIndiana

Sunfreeware 上的 Solaris 8 到 10 内置了 Ruby 1.8.7,Blastwave 同样如此。Ruby 1.9.2p0 在 Sunfreeware 上也有,但是这一版已经过时。
若想在 OpenIndiana 上安装 Ruby,要使用 Image Packaging System (IPS) 客户端。这将直接从 OpenSolaris 代码库安装 Ruby 1.9 和 RubyGems:


$ pkg install runtime/ruby-18
然而,第三方工具或许是获取最新版 Ruby 更好的方法。

其它发行版

在其它操作系统中,可以使用包管理器在包仓库中搜索 Ruby,或许使用第三方工具是更好的选择。

安装工具

如果系统或者包管理器提供的 Ruby 版本已经过时,可以使用第三方安装工具来安装更新的版本。其中许多工具允许在同一个系统中安装多个 Ruby 版本,相关的工具能帮你在不同的版本之间切换。如果打算用 RVM 作为版本管理工具,不需要其它的安装工具,它自己就具有这些功能。

ruby-build

ruby-buildrbenv 的一个插件,能在任意目录中编译和安装不同版本的 Ruby。ruby-build 也可以不依赖 rbenv 而单独使用。支持的平台有 OS X、Linux 和其它类 UNIX 操作系统。

ruby-install

ruby-install 能在任意目录中编译和安装不同版本的 Ruby。还有个兄弟工具,chruby,可以用来切换不同的 Ruby 版本。支持的平台有 OS X、Linux 和其它类 UNIX 操作系统。

RubyInstaller

如果使用 Windows,有个不错的项目能帮你安装 Ruby:RubyInstaller。它能帮你在 Windows 中安装所需的所有 Ruby 开发环境。
下载、运行,即可!

RailsInstaller 和 Ruby Stack

如果是为了使用 Ruby on Rails 而安装 Ruby,可以使用下列安装工具:
  • RailsInstaller,使用的是 RubyInstaller,但包括了其它能够帮助 Rails 开发的工具。支持 OS X 和 Windows。
  • Bitnami Ruby Stack,提供了完整的 Rails 开发环境。支持 OS X、Linux、Windows、虚拟机和云镜像。

管理工具

许多 Ruby 程序员使用 Ruby 管理工具管理不同版本的 Ruby。这些管理工具有很多额外的优点,但没有官方支持。不过,这些工具背后的社群都乐于助人。

chruby

chruby 用于在不同的 Ruby 版本之间切换。chruby 能够管理用 ruby-install 或者通过源码编译安装的 Ruby。

rbenv

rbenv 用于管理系统中安装的多个 Ruby 版本。它不能直接安装 Ruby,但有个流行的插件叫 ruby-build 能够安装 Ruby。这两个工具都支持 OS X、Linux 和其它类 UNIX 操作系统。

RVM(“Ruby Version Manager”)

RVM 能在系统中安装和管理多个 Ruby 版本。同时还能管理不同的 gem 集。支持 OS X、Linux 和其它类 UNIX 操作系统。

uru

Uru 是一个轻量级的命令行工具,支持多平台,能够帮你在 OS X、Linux 和 Windows 上使用不同的 Ruby 版本。

通过源码编译安装

当然,也可以通过源码安装 Ruby。下载,解压,然后执行:


$ ./configure
$ make
$ sudo make install
默认情况下,Ruby 安装到 /usr/local 目录。如果想使用其他目录,可以把 --prefix=DIR 选项传给 ./configure 脚本。
因为无法使用任何工具来管理通过源码编译安装的 Ruby,所以使用第三方工具或者包管理器或许是更好的选择。

from https://www.ruby-lang.org/zh_cn/documentation/installation/#rubyinstaller
-------------

curl -sSL https://get.rvm.io | bash -s stable --ruby=2.2.3
 
from http://rvm.io/ 
-------------------

在 Mac 上搭建 Ruby on Rails 开发环境

近期 Apple 就应该会发布新版本的操作系统了 Mountain Lion, 而目前推出的 GM 版本不出意外也应该是最终发行的版本.
这里我们会在一台全新的 mac 上搭建 rails 开发环境, 使用的软件版本如下:
  • OS X Mountain Lion 10.8
  • rvm 1.14.5
  • Ruby 1.9.3-p194
  • Postgresql 9.1.4
可能实际安装的版本和目前不同, 所以需要根据实际环境来修正安装步骤. 另外还需要对 mac 系统的终端有一定的了解.

Xcode

从 4.3+ 以后, Apple 将 xcode 包装成了一个独立的程序, 而作为一般非 ios 或者 mac 的开发人员来说, 并不需要下载整个 xcode, 要进行编译的话, 只需要安装 Command Line Tools for Xcode 就可以有一个命令行的编译环境了.
Command Line Tools for Xcode 可以直接在 apple 的 developer center 中下载, 点击这里进入(需登陆) 当然普通用户也强烈推荐安装 Command Line Tools for Xcode, 他为系统提供了编译所需要的一切环境. 有了编译环境我们就可以自由的编译各种开源软件了.
另外也可以通过系统自带的 app store, 下载安装 xcode, 通过 xcode 的偏好设置下载 Command Line Tools. 不过由于 xcode 需要 3.5g 的空间, 并且不开发 ios 或者 mac 基本毫无作用, 所以不推荐下载 xcode 再安装 Command Line Tools.

Homebrew

Homebrew 是目前 mac 上最好用的源代码编译框架, 之前的 MacPorts 虽然也可以使用, 但是它完全不依赖系统目前已经提供的任何包, 导致任何东西都需要编译, 当然有些人可能认为是优点. 不过有时候难免自己编译些东西. 用 homebrew 是可以很好的和自己编译的内容整合, 但 macport 就不这么方便了.
安装 homebrew, 我们在终端中输入
/usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
完成后, brew 就安装好了, 接着需要新建 ~/.profile 文件, 并添加如下内容
export PATH=/usr/local/bin:/usr/local/sbin:$PATH

if [ "${BASH-no}" != "no" ]; then
 [ -r ~/.bashrc ] && source ~/.bashrc
fi
主要是让 brew 安装的程序, 可以比系统自带的拥有更高的优先级. 以便提供或者修正系统自带程序的问题和不足.
完成以上步骤以后, 需要关闭当前的终端, 在开启一个新终端. 使得刚刚修改的 .profile 生效.
接着可以输入 brew -v 来查看当前安装的 brewhome 的版本. 并且输入
brew update
将 brew 更新至最新版本, 以后使用 brew install 前也最好输入该命令以保证安装的包总是最新的, 以减少兼容性冲突.

RVM

RVM 是一个管理 ruby 各种版本, 并且协助编译的工具. 任何情况下都推荐使用 rvm 来管理和安装 Ruby.
和 homebrew 全局系统共用不同, 作为开发环境, 一般安装在用户主目录中. 这里我们只需要在终端中输入
curl -L get.rvm.io | bash -s stable
rvm 就自动安装完成了.
需要特别注意的是 rvm 1.14.5 会自动把配置 加入 .bash_login, .zlogin, 但其中又不载入全局的 .profile 导致其他环境变量丢失. 所以还需要在 ~/.bash_login 中加入
[ -r ~/.profile ] && source ~/.profile
这只是其中一种修改方案, 还有其他很多中改法. 另外如果 shell 用的不是 bash 而是 zsh 则请自行修改.
接着开启一个新的终端, 就可以通过输入 rvm -v 来查看我们安装 rvm 的版本.

Ruby

安装完 rvm 后, 就可以使用 rvm 来编译和安装 ruby. 安装前还需要确认安装环境, 我们输入
rvm requirements
可以看到结果中有一段是
For Ruby 1.9.3: Install libksba # If using Homebrew, 'brew install libksba'

You can use & download osx-gcc-installer: https://github.com/kennethreitz/osx-gcc-installer
** NOTE: Currently, Node.js is having issues building with osx-gcc-installer. The only fix is to install Xcode over osx-gcc-installer.

...

Xcode 4.3+ users
- please be warned
- only ruby-1.9.3-p125+ is partially supported
- in case of any compilation issues:
 * downgrade to Xcode 4.1
 * uninstall Xcode and install osx-gcc-installer
and reinstall your rubies.
其实最主要的意思还是, apple 用 clang 代替了 gcc, 所以有些需要编译的库会有问题. 需要安装 gcc 或者旧版本的 xcode. 不过么我目前还没有遇到兼容性问题, 所以直接无视了, 如果以后遇到了编译问题再研究也就是了, 而且显而易见随着软件的更新也会逐步的兼容 clang 所以等出问题了再说.
接着开始安装 ruby 1.9.3, 按照之前的描述还需要安装一个叫 libksba 的库, 而 readline 是用来解决无法输入中文的问题, 所以我们依次输入
brew install libksba
brew install readline
LDFLAGS="-L/usr/local/opt/readline/lib" CPPFLAGS="-I/usr/local/opt/readline/include" rvm install 1.9.3
等待 rvm 自动的下载和编译 ruby, 由于新版本 rvm 会自动设置刚安装的 ruby 为该用户默认的 ruby, 所以这里不需要其他操作了, 如果不是则需要输入
rvm use 1.9.3 --default
代替系统提供的 ruby 成我们自己编译的版本
接着可以输入 rvm list 来验证是否是我们安装的 ruby.
接着就可以使用 gem install rails 来安装最新版本的 rails 了.
安装 gem 的时候, 会自动安装 ri 和 rdoc, 但一般都在线查看帮助文档, ri 和 rdoc 基本没有用, 所以我们可以 编辑 ~/.gemrc 加入 gem: -V --no-ri --no-rdoc 来关闭 ri 和 rdoc 的安装.

数据库 Postgresql

postgresql 和 mysql 中推荐于使用 postgresql, 所以这里只提供 postgresql 在 mac 的安装步骤.
因为我们之前安装了 homebrew, 所以安装 postgresql 及其简单, 只需要输入
sudo brew install postgresql
就可以完成安装了. 接着还需要初始化数据和设置成随系统自动启动. (需要注明的是, 在目前的 Mountian Lion 环境下, 必须加入 --no-python --without-ossp-uuid 才可以完成安装.)
mac 从 lion 后就默认提供了一个叫 _postgres 的用户, 所以推荐使用该用户来初始化数据库 (如果使用当前用户初始化数据库会导致本机其他用户无法使用当前用户所生成的数据库). 但系统默认禁止了这个用户登入,就需要我们开启该用户的登入shell, 在终端中输入
sudo dscl . -change /Users/_postgres UserShell /usr/bin/false /bin/bash
接着建立 Postgresql 数据目录
mkdir -p /usr/local/var/postgres
sudo chown _postgres:_postgres /usr/local/var/postgres/
接着切换到 _postgres 来初始化数据库
sudo su - _postgres -c "/usr/local/bin/initdb --locale=zh_CN.UTF-8 /usr/local/var/postgres"
这里需要主意的是 initdb 必须使用全路径 /usr/local/bin/initdb, 因为 lion 默认自带 Postgresql , 会和我们安装的数据库冲突.
接着需要设置 Postgresql 随系统自动启动. 首先开启一个新终端, 并复制启动文件到系统目录
sudo cp /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist /Library/LaunchDaemons/
这里需要注意的是我们复制的是 /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist 这个文件, 这里的 9.1.4 是我们数据库的版本, 接着编辑该文件 /Library/LaunchDaemons/homebrew.mxcl.postgresql.plist, 找到
<key>UserName</key>
<string>username</string>
修改成
<key>UserName</key>
<string>_postgres</string>
还需要输入命令, 开启自动启动.
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.postgresql.plist
等启动完成以后就可以通过 _postgres 来管理数据库了, 但一般都会使用 postgres 做为超级用户. 所以我们还需要输入
psql -U _postgres postgres
CREATE ROLE postgres LOGIN PASSWORD 'postgres'
 SUPERUSER CREATEDB CREATEROLE REPLICATION;
\q
这样我们就新建好一个用户名和密码都是 ‘postgres’ 的超级用户了.
另外 Lion 系统默认参数会导致, postgresql 使用段时间后会没有足够的内存启动, 所以我们还需要编辑 /etc/sysctl.conf 文件, 并且添加
kern.sysv.shmmax=524288000
接着重启系统, 就可以使用 postgresql 数据库.

最后

这样就基本把一个最基本的 ruby 开发环境搭建好了, 其他语言的话也可以参考这个步骤来安装.
最后至于编辑器, 这里我只对于初学者推荐使用 sublime text 2 编辑器, 忘记不真气的 textmate 吧.

扩展阅读