Site icon Soul & Shell Blog

透過 RVM 安裝 Ruby 2.1.0 解決 CentOS ruby 1.8.7 執行 Sencha CMD 會「regexp buffer overflow」的問題

前言 (其實本文在介紹 RVM)RVM

由於我們開發 WebApp 會在 Linux 持續整合 (Continuous Integration) 系統中進行每日建置 (Nightly Build) 工作,持續整合可以參考這一篇文章介紹。最近導入 SASS 來重構整個 CSS 的程式碼,不然 CSS 太肥很難維護。在 Windows 進行 SASS 編譯沒有問題(透過 compass),但是在持續整合 Linux CentOS 上卻出現「regexp buffer overflow」的錯誤,GG 畫面如下:

[INF] -compass-compile-sass-dir:
[INF] executing compass using system installed ruby runtime
StringScanner::Error on line 906 of /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb: regexp buffer overflow
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb:906:in `tok'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb:424:in `selector_sequence'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb:354:in `ruleset'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb:379:in `block_child'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb:372:in `block_contents'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb:57:in `stylesheet'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/scss/parser.rb:26:in `parse'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/engine.rb:320:in `_to_tree'
  /usr/bin/Sencha/Cmd/4.0.2.67/extensions/sencha-compass/gems/gems/sass-3.1.7/lib/sass/../sass/engine.rb:252:in `to_tree'

由於我在 Windows 環境是跑 Ruby 2.0.0,因此想說先升級 CentOS Ruby 的版本來試看看。Google 了一些資料,似乎現在用 RVM (Ruby Version Manager) 管理 Ruby 比較炫,而且可以同時安裝很多版本的 Ruby。因此最後我決定採用 RVM 的方式進行 Ruby 升級,有興趣的請繼續看下去。

安裝 RVM

安裝 RVM,方法如下:

先用 yum 安裝需要的套件

[root@linux ~]# yum install gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel

安裝 RVM

[root@linux ~]# curl -L get.rvm.io | bash -s stable

設定 RVM 環境

[root@linux ~]# source /etc/profile.d/rvm.sh

透過 RVM 安裝 Ruby 2.1.0

[root@linux ~]# rvm install 2.1.0

如果運氣好的話應該可以看到跟我一樣的畫面,如下:

設定預設的 ruby 版本,順便查一下是否成功

[root@linux ~]# rvm use 2.1.0 --default
Using /usr/local/rvm/gems/ruby-2.1.0
[root@linux ~]# ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux]

 最後當然要重新執行 Sencha CMD 看看,我很幸運成功編譯 SASS,Good Luck!

小結

這幾年 Programming/Scripting Lanuage 發展的很快,很多套件管理工具一直進步,以前搞個 Ruby 都很灰心,這次用 RVM 感覺輕鬆多了,就像 PHP 由 pear 換到 composer 的感覺一樣清新,考試都一百分了!

參考文件

Exit mobile version