大鳥的學習樂園
          路漫漫其修遠兮,吾將上下而求索
          posts - 26,comments - 27,trackbacks - 0
          接下來,CentOS gcc安裝
          yum -y install gcc

          升級到rails3+ruby1.9.2過程中遇到的各種問題

          文章分類:Ruby編程
          由于ubunut系統中自帶的rails和ruby版本都比較低,所以打算干掉以前的版本重新編譯,遇到了N多麻煩,倒也是好事,又認識到了很多問題,明白了一些東東的含義

          一 升級ruby1.8.7到1.9.2

          首先下載ruby-1.9.2
          Java代碼 復制代碼
          1. wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz   
          2.   
          3.  tar -zxvf ruby-1.9.2-p0.tar.gz   
          4.  cd ruby-1.9.2-p0   
          5.  .configure -prefix=/usr/local/ruby # 指定安裝路徑   
          6.  make   
          7.  make test    
          8.  make install               #編譯并安裝   
          9.  sudo ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby # 建立一個軟鏈接  

            一切順利,不過不知道咋回事,貌似是昨天搞gem的時候,又把1.8重新弄回來了
            今天,重啟電腦之后,還是1.8,1.9也有,亂七八糟的,決定重來
            于是,修改全部步驟,刪除了usr/local/ruby 刪除 usr/bin/ 下的所有ruby
            重新上面的步驟(ln那條命令除外)
            最后修改了一下環境變量path 編輯文件 etc/environment
           
          Java代碼 復制代碼
          1. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ruby/bin"  


            修改完畢,重啟系統,搞定

          Java代碼 復制代碼
          1. ruby -v   
          2. ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]  

          ruby安裝完成

          二 GEM的升級

          運行gem命令,出錯提示:依賴的ruby1.8.7 出現錯誤,這個是以前殘留的
          于是乎 /usr/bin 下的一系列gem gem1.8 gem×× 之類的全部干掉

          在安裝ruby1.9.2之后gem已經安裝了
          因為上面設置了path,gem在usr/local/ruby/bin目錄下
          所以刪除殘留的那些后運行gem依然可以
          Java代碼 復制代碼
          1. gem -v   
          2. 1.3.7  

          但是運行gem list
          出現錯誤
          Java代碼 復制代碼
          1. ERROR:  Loading command: list (LoadError)   
          2.    no such file to load -- zlib   
          3. ERROR:  While executing gem ... (NameError)   
          4.    uninitialized constant Gem::Commands::ListCommand  


          搜了一下:(http://javaeye.shaduwang.com/?www/topic/743850),說是缺少zlib
          Java代碼 復制代碼
          1. (1)sudo apt-get install zlib1g-dev    
          2. (2)然后到源碼目錄的ext/zlib下 (剛才解壓的ruby1.9.2目錄)   
          3. (3)ruby extconf.rb         (需要管理員權限)   
          4. (4)make    
          5. (5)sudo make install  

          gem list 這個可以運行了
          gem install ×× 也可以運行了

          補充說明:
          雖然設置了環境變量的path路徑,還是要建立一下軟鏈接,要不然 執行sudo ruby或者sudo gem時還是會報錯:
          Java代碼 復制代碼
          1. sudo: ruby: command not found  

          所以還要建立以下軟鏈接
          Java代碼 復制代碼
          1. sudo ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby    
          2. sudo ln -s /usr/local/ruby/bin/gem /usr/bin/gem  

          然后執行 sudo gem -v 輸出 1.3.7

          三、安裝rails3

          運行了rails -v
          bash: /usr/bin/rails:/usr/bin/ruby1.8:損壞的解釋器: 沒有該文件或目錄

          find了一下rails 發現/usr/lib/ruby/gems/1.8 目錄下面有rails文件
          /usr/bin/rails 便是運行時調用的rails
          統統刪除

          執行命令 gem install rails 開始安裝rails
          安裝完成以后運行 rails -v 沒問題
          但是sudo rails -v 就回提示沒有這個命令
          跟上面同理:sudo ln -s /usr/local/ruby/bin/rails /usr/bin/rails

          sudo rails -v 也沒問題了

          四 其他問題

          打開昨天的rails3+ruby1.8的項目,rake test出現錯誤
          首先是一些gem的更新,造成的版本號不對應,修改之后,rake test
          錯誤:Errors running test:units!
          不知道什么錯誤

          單獨運行
          Java代碼 復制代碼
          1. rake test:units   
          2. !!! Missing the mysql gem. Add it to your Gemfile: gem 'mysql''2.8.1'  
          現看了下gem list,發現還沒有安裝mysql 這個gem

          于是 安裝 mysql 的gem
          Java代碼 復制代碼
          1. sudo gem install mysql  

          出錯,堆棧異常如下:
          ------------------------------------------
          Java代碼 復制代碼
          1. Building native extensions.  This could take a while...   
          2. ERROR:  Error installing mysql:   
          3.     ERROR: Failed to build gem native extension.   
          4.   
          5. /usr/local/ruby/bin/ruby extconf.rb   
          6. checking for mysql_query() in -lmysqlclient... no   
          7. checking for main() in -lm... yes   
          8. checking for mysql_query() in -lmysqlclient... no   
          9. checking for main() in -lz... yes   
          10. checking for mysql_query() in -lmysqlclient... no   
          11. checking for main() in -lsocket... no   
          12. checking for mysql_query() in -lmysqlclient... no   
          13. checking for main() in -lnsl... yes   
          14. checking for mysql_query() in -lmysqlclient... no   
          15. checking for main() in -lmygcc... no   
          16. checking for mysql_query() in -lmysqlclient... no   
          17. *** extconf.rb failed ***   
          18. Could not create Makefile due to some reason, probably lack of   
          19. necessary libraries and/or headers.  Check the mkmf.log file for more   
          20. details.  You may need configuration options.   
          21.   
          22. Provided configuration options:   
          23.     --with-opt-dir   
          24.     --without-opt-dir   
          25.     --with-opt-include   
          26.     --without-opt-include=${opt-dir}/include   
          27.     --with-opt-lib   
          28.     --without-opt-lib=${opt-dir}/lib   
          29.     --with-make-prog   
          30.     --without-make-prog   
          31.     --srcdir=.   
          32.     --curdir   
          33.     --ruby=/usr/local/ruby/bin/ruby   
          34.     --with-mysql-config   
          35.     --without-mysql-config   
          36.     --with-mysql-dir   
          37.     --without-mysql-dir   
          38.     --with-mysql-include   
          39.     --without-mysql-include=${mysql-dir}/include   
          40.     --with-mysql-lib   
          41.     --without-mysql-lib=${mysql-dir}/lib   
          42.     --with-mysqlclientlib   
          43.     --without-mysqlclientlib   
          44.     --with-mlib   
          45.     --without-mlib   
          46.     --with-mysqlclientlib   
          47.     --without-mysqlclientlib   
          48.     --with-zlib   
          49.     --without-zlib   
          50.     --with-mysqlclientlib   
          51.     --without-mysqlclientlib   
          52.     --with-socketlib   
          53.     --without-socketlib   
          54.     --with-mysqlclientlib   
          55.     --without-mysqlclientlib   
          56.     --with-nsllib   
          57.     --without-nsllib   
          58.     --with-mysqlclientlib   
          59.     --without-mysqlclientlib   
          60.     --with-mygcclib   
          61.     --without-mygcclib   
          62.     --with-mysqlclientlib   
          63.     --without-mysqlclientlib   
          64.   
          65.   
          66. Gem files will remain installed in /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql-2.8.1 for inspection.   
          67. Results logged to /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql-2.8.1/ext/mysql_api/gem_make.out  

          --------------------------------

          沒有安裝下面這個造成的
          Java代碼 復制代碼
          1. apt-get install libmysqlclient-dev  


          安裝好這個,終于可以 gem install mysql了

          再運行 rake test
          再次出錯
          !!! Missing the mysql gem. Add it to your Gemfile: gem 'mysql', '2.8.1'
          再看,忘了把gem 'mysql','2.8.1' 這句話放到Gemfile文件

          終于……
          可以運行rake test了
          posted on 2011-03-05 07:44 大鳥 閱讀(2497) 評論(0)  編輯  收藏 所屬分類: linux
          主站蜘蛛池模板: 丰城市| 德江县| 黎平县| 浦东新区| 定州市| 广西| 泸定县| 霍邱县| 凤山县| 克山县| 青川县| 陵水| 高清| 宁武县| 太仆寺旗| 正安县| 榕江县| 普安县| 湖北省| 阜南县| 娄烦县| 轮台县| 麻栗坡县| 娄底市| 东海县| 哈巴河县| 霍城县| 三穗县| 鄂托克前旗| 黑水县| 怀远县| 六盘水市| 孟州市| 拉萨市| 大石桥市| 云南省| 浪卡子县| 安福县| 郯城县| 遂溪县| 绵竹市|