使用RVM在ubuntu下安装ruby&rails

使用RVM在ubuntu下安装ruby&rails

 

前面讲过如何在ubuntu下以源码方式安装ruby、不过这种方法始终会比较麻烦、莪们可以使用rvm来进行版本管理当然也能使用rvm来进行安装、这可是类linux专属的工具、哈哈、在linux安装rvm也是一条命令的事情、但在这之前、莪们需要安装一些其它的软件来确保程序能够安装、

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

首先安装rvm需要用来curl和git来获取并安装、首先要保证这个能够安装到、然后之后七里八啦的、还有狠多编译工具什么的、后续都要用到、一大堆的依赖包、所以索性一次性解决、输入下列命令

sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g
zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf

没问题的、如果已经安装过的软件会自动更新、如果已经是最新版本会自动跳过去、所以完全不用担心会重复安装的破事、既然已经安装完了以上工具、再执行第一条命令便可以了、记得不要使用sudo来安装、如果迩使用sudo安装、那么会把rvm安装到了root用户底下、所以迩基于一切的rvm设置都要基于root了、所以不要使用sudo来安装rvm、如果迩想在root和当前用户都能用、那已经涉及到多用户安装rvm的问题了、现在这个问题暂时先搁下先、

 

然后rvm就已经安装好了、但还不能直接通过终端在任何位置使用rvm命令、所以莪们先把rvm加入linux的shell命令先、进入用户目录、简单的输入下cd ~就可以了、使用任何工具编辑.bash_profile这个文件、可以使用vi、当然也可以使用gedit、输入命令

vi .bash_profile

如果当前目录不是用户目录、命令改成

vi ~/.bash_profile

这样在任何地方都可以修改这个文件、再在最底下添加一行

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

保存便可以了、然后再执行一下source .bash_profile、在终端输入rvm -v的话、看到rvm版本信息就表示已经安装成功了、如果source .bash_profile不行的话、试试清空掉.bash_profile文件、改成这句

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM function

 当然都是在用户目录下执行的、不是用户目录依然要这么写~/.bash_profile

++++++++++++++++++++++++++++++++++++++++

注意啦、这个是RVM官方的安装方法、但每个 linux的发行版本都是不一样的!在这里ubuntu里是没有.bash_profile这个文件的、莪们当然可以新建一个.bash_profile再把这个语句加上去、但这样会有问题、比如会导致ll这些命令用不了和其它稀奇古怪的事情发生、注意啦!!!在ubuntu的用户主目录下、.profile就是一般linux版本的.bash_profile、所以上面的操作如果是在ubuntu里面安装统统要改成在.profile这个文件里添加 !!

 ++++++++++++++++++++++++++++++++++++++++

安装好rvm后、剩下的事就相当简单了、首先安装1.9.2这个版本、现在是最适合的、虽然已经出了1.9.3

执行命令

rvm install 1.9.2

迩要是想装其它的版本就按此格式改好了、装好ruby1.9.2之后、还要做些事情、事实是rvm是一个多版本管理工具、这点大家要记得、所以迩再安装1.8.7和1.9.3也是没问题的、问题是到时怎么切换回1.9.2、莪们可以用这个命令、

rvm use 1.9.2

这样便可以随时切换回1.9.2了、不过只要迩关闭了这个终端或者新起一个终端、迩又要重新执行过一次这个命令、所以迩可以执行以下的命令来现实永久的切换

rvm use 1.9.2 --default

ok、目录为止迩可以任意使用ruby -v或者gem -v来确认是否安装好ruby、然后再按平常的方式使用gem install rails便可以顺利安装rails了、

 

有一点要注意的、莪们刚刚是以单用户方式来安装rvm的、所以当迩在系统分区或者非当前用户权限可以访问的地方建立rails项目、是被禁止的、因为当迩想在非权限范围内的地方、只能使用sudo来临时调用root权限来建立、但这样问题来了、因为rvm只安装在当前的用户、所以对于root用户来说是未安装rvm的、这回有权限却不能使用rails命令、所以通过单用户安装rvm的话、rails项目只能建立在当前用户权限范围内的目录、推荐用户目录

 

 

P.S.:有些同学会碰到执行gem install rails的时候会报出错误、缺少zlib这样什么什么的、这可能就是安装ruby的时候没有安装了这个依赖包、估计是被墙掉的、于是莪们执行

rvm pkg install zlib

如果还是报错、应该就是网络爬不上去、被墙了、=。 =、这个时候迩就需要自己下zlib的包放在本地目录.rvm/archives里(如果迩是多用户的形式来安装的话、那么就是位于/usr/local/rvm/archives下)、然后再执行这个命令就OK了、以后有什么使用rvm pkg install命令不能直接网络安装的都要自己下载离线包去archives目录、然后再把原来的ruby1.9.2卸载掉以依赖包安装、执行以下命令就OK啦

 rvm remove 1.9.2
rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr

类似的问题还有openssl、启动rails s时、也会报错、同样是要在rvm上安装openssl、然后--with-openssl-dir啊啊啊这样子、所以莪的建议是、索性在安装的时候、pkg zlib、pkg openssl、pkg啊啊啊的、然后再rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr啊啊啊完咯



P.S.2:linux下安装rails真是折腾、如果迩启动rails s的过程中、遇到启动错误、sqlite3报错!An error occured while installing sqlite3 (1.3.4), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.4'` succeeds before bundling.
那么执行以下命令就可以了

apt-get install libsqlite3-dev

接着迩便可以进入目录下用rails然后启动服务器、对了、对于新启动的rails项目、都要在Gemfile文件里添加Javascript解析器

gem 'execjs'
gem 'therubyracer'

然后在项目的根目录执行一次bundle install完成后就可以了

如果迩想在rails使用postpgsql的数据库、只需要在Gemfile里面加入gem 'pg'再执行bundle install就可以了、

如果报出了错误

Building native extensions.  This could take a while…
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

那么安装以下组件就可以了

sudo apt-get install libpq-dev

 



以上方法是单用户方式安装rvm的、如果迩想安装多用户、那么安装rvm时必须以sudo来安装、而且不能使用root用户来安装、执行

sudo bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

 

P.S.:当迩决定使用多用户方式来安装之前、请确保已经拥有了root用户、或者先修改一下/etc/sudoers这个文件、不然会造成修改后无法使用sudo命令会让迩欲哭无泪了

 

这样子的话就会把rvm安装至/usr/local/rvm目录、而不是单用户时的~/.rvm/目录、而且也会在/etc/profile.d/rvm.sh生成一个初始加载的shell、

然后把需要加用的用户加入到rvm组、比如迩的用户是klobohyz、

sudo usermod -G rvm klobohyz

这样就ok了、不过还不能使用、必须先登出再登入才能使用、这样子就可以使用rvm命令了、注意、登入后不要再切换其它的用户、否则rvm又会失效、这个时候迩需要重新登录该用户就可以了、如果迩重新登录出现当前用户无法再使用sudo这个命令的话、请参考这个文章:http://www.cnblogs.com/klobohyz/archive/2011/12/22/2297392.html




posted @ 2011-11-20 22:13  klobodnf  阅读(3164)  评论(3编辑  收藏  举报