大鸟的学习乐园
路漫漫其修远兮,吾将上下而求索
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 大鸟 阅读(2486) 评论(0)  编辑  收藏 所属分类: linux

只有注册用户登录后才能发表评论。


网站导航: