使用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