首页 » ruby » Linux下的Ruby on Rails环境搭建手册

Linux下的Ruby on Rails环境搭建手册

 

一.题记
项目中需要用到ruby进行一次数据的处理,所以写篇文章记录一下安装过程中遇到的一些坑
二.实验环境
1.Linux:Red Hat Enterprise Linux Server release 6.1 (Santiago)
2.ruby:2.4.2
备注:查看当前Linux版本命令

1).# more /etc/issue 
2).# lsb_release -a

三.实验步骤
(一).ruby安装
1.软件下载
ruby:http://www.ruby-lang.org/en/downloads/
直接下载地址:wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz
2.软件安装
备注:没有特殊说明我这里默认都安装在/opt/目录下
(1).赋予权限并解压

# chmod -R 755 ./ruby-2.4.2.tar.gz
# tar -zxvf ./ruby-2.4.2.tar.gz

(2).编译安装
备注:安装遇到问题参照【四.问题整理】

# ./configure -prefix=/opt/ruby
# make
# make install

(3).配置环境变量
1).编辑【# vi /etc/profile】添加下面内容
RUBY_HOME=/opt/ruby
export RUBY_HOME
export PATH=$RUBY_HOME/bin:$PATH
2).配置好后【# source profile】进行刷新
3).查看版本【# ruby –version】
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
(二).rails安装
1.事前准备:

# yum install zlib zlib-devel
# yum install readline readline-devel
# yum install openssl openssl-devel 
# yum install libssl-devel libyaml-devel

2.软件安装
在安装rails之前我们先安装ruby的在线包管理工具
https://rubygems.org/pages/download
直接下载地址:wget https://rubygems.org/rubygems/rubygems-2.6.14.tgz
(1).安装rubygems

# tar -zxvf ./rubygems-2.6.14.tgz
# cd rubygems-2.6.14
# ruby setup.rb

(2).在线安装

gem install rails

(3).查看版本

# rails --version
Rails 5.1.4

备注:最后都安装完成之后可以用【# gem list】查看一下安装列表
四.问题整理
安装过程中如果遇到下面问题,可以考虑用我这个解决方案。
1).执行编译【./configure -prefix=/opt/ruby】,报下面错误
(一).错误信息:

checking for ruby... false
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/opt/ruby':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

(二).问题分析:
通过信息我们可以看到,编译安装ruby前,系统需要安装gcc,cc
(三).解决方案:

# yum install gcc
# yum install gcc-c++ libstdc++-devel

2).安装gcc【yum install gcc】,报下面错误
(一).错误信息:

Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
Setting up Install Process
No package gcc available.
Error: Nothing to do

(二).问题分析:
redHat的yum更新是收费的,所以我们要想使用的话需要先卸载系统自带的yum,更换别的yum,我这里用阿里的yum
(三).解决方案:
1.先记录下系统自带yum包,然后去阿里【https://mirrors.aliyun.com/centos/7.4.1708/os/x86_64/Packages/】搜名称.
备注:版本有点差异不要紧,包名一样就行

# rpm -qa | grep yum

2.卸载自带的yum

# rpm -qa | grep yum | xargs rpm -e --nodeps 

3.下载yum

# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/yum-utils-1.1.30-40.el6.noarch.rpm
# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/PackageKit-yum-0.5.8-26.el6.x86_64.rpm

备注:如果下载的时候提示安全证书不一致,在网址后面添加【–no-check-certificate】,跳过证书验证

# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm --no-check-certificate
# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/yum-utils-1.1.30-40.el6.noarch.rpm --no-check-certificate
# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm --no-check-certificate
# wget https://mirrors.aliyun.com/centos/6.9/os/x86_64/Packages/PackageKit-yum-0.5.8-26.el6.x86_64.rpm --no-check-certificate 

4.安装yum

# rpm -ivh ./yum-3.2.29-81.el6.centos.noarch.rpm --nodeps
# rpm -ivh ./yum-utils-1.1.30-40.el6.noarch.rpm --nodeps
# rpm -ivh ./yum-metadata-parser-1.1.2-16.el6.x86_64.rpm --nodeps
# rpm -ivh ./PackageKit-yum-0.5.8-26.el6.x86_64.rpm  --nodeps

备注:如果这里你下的是yum-3.4.3版本的,python2.6的版本需要升级了,要不执行【yum repolist all】会报版本不匹配错误;
如果你的系统python版本已经很高了,但是还出现版本不匹配错误,请参照我下面的解决方案
5.更新repos文件
这里更新我就直接用阿里配置好的源文件,也可一自己修改【/etc/yum.repos.d/rhel-source.repo】文件
(1).获取阿里云源配置文件
http://mirrors.aliyun.com/help/centos
(2).按照【(1)】的方法获取好阿里的源之后,执行命令查看当前可用仓库

# yum repolist all
repo         id           repo   name                  status
base         CentOS-6.9 - Base - mirrors.aliyun.com    enabled: 6,706
centosplus   CentOS-6.9 - Plus - mirrors.aliyun.com    enabled: 74
contrib      CentOS-6.9 - Contrib - mirrors.aliyun.com enabled: 0
extras       CentOS-6.9 - Extras - mirrors.aliyun.com  enabled: 46

备注:如果上面的status是disabled,将【CentOS-Base.repo】文件里的enabled=0设置成enabled=1
3).执行【yum repolist all】,报下面错误
(一).错误信息:

It's possible that the above module doesn't match the
current version of Python, which is:
2.6.6 (r266:84292, Apr 11 2011, 15:50:32)
[GCC 4.4.4 20100726 (Red Hat 4.4.4-13)]

(二).问题分析:
当前系统存在多个python版本,或者python与yum要求的不匹配
(三).解决方案:
1.查看当前系统python版本

# whereis python

python: /usr/bin/python /usr/bin/python2.6 /usr/lib/python2.6
/usr/lib/python2.7 /usr/lib64/python2.6 /usr/include/python2.6
/usr/share/man/man1/python.1.gz
2.修改yum的配置文件
这块目前想到了两种方案,一种是直接修改yum指向的phthon版本,另一种是直接删除一个版本,我这里采用第一种方案

# vi /usr/bin/yum

# 将顶部的【#!/usr/bin/python】修改为 【#!/usr/bin/python2.6】
4).执行【yum makecache】,报下面错误
(一).错误信息:

http://mirrors.aliyun.com/centos/%24releasever/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404"
Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

(二).问题分析:
因为我们系统用的是redHat,【$releasever】和【$basearch】是取表示当前系统的发行版本和系统硬件架构(系统位数),我们用的是centos源,
这两个参数在redHat系统没有识别,所以无法根据这个变量获取正确的下载地址。
(三).解决方案:
这里因为我做演示,我知道我系统位数和想要的资源,所以将变量【$releasever】和【$basearch】写成常量
修改文件:【/etc/yum.repos.d/CentOS-Base.repo】,并替换下面变量
【$releasever】替换【6.9】
【$basearch】替换【x86_64】
说明:【CentOS-Base.repo】是我们上面从阿里下的yum源文件
原来的动态地址:http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
修改好后的地址:http://mirrors.aliyun.com/centos/6.9/os/x86_64/
备注:去官方网站直接找自己的系统版本就行了【http://mirrors.aliyun.com/】
5).执行【yum install】,报下面错误
(一).错误信息:

ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass

(二).问题分析:
缺少了zlib库,需要安装一下
(三).解决方案:
在装这个库的时候,中间还会报【make:*** No rule to make target `/include/ruby.h’, needed by `zlib.o’】错误,所以我们需要编译前修改下路径
1.修改文件【/opt/ruby-2.4.2/ext/zlib/Makefile】
修改前:zlib.o: $(top_srcdir)/include/ruby.h
修改后:zlib.o: ../../include/ruby.h
2.修改好后在重新编译一下

# cd /opt/ruby-2.4.2/ext/zlib/
# ruby extconf.rb  
# make  
# make install

备注:ruby-2.4.2是我们前面【ruby-2.4.2.tar.gz】解压后的文件夹
5).执行【gem install rails】,报下面错误
(一).错误信息:

ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources

(二).问题分析:
提示缺少openssl库,其实开始的时候我已经安装了,但是这里还是报了,貌似还是编译的时候没编译成功,这里在搞一下。
(三).解决方案:
这里同样会报【make:*** No rule to make target `/include/ruby.h’, needed by `ossl.o’】错误,所以我们需要编译前修改下路径
1.修改文件【/opt/ruby-2.4.2/ext/openssl/Makefile】
修改后:将上面文件里的【$(top_srcdir)】统一改成【../../】
2.修改好后在重新编译一下

# cd /opt/ruby-2.4.2/ext/openssl/
# ruby ./extconf.rb  
# make  
# make install

五.总结
以上就是我这次要分享的内容,其实环境搭建是十分简单的,主要是我们系统用到了redHat,在安装过程中很多的依赖库都有限制,所以在一开始的时候需要卸载掉系统自带的yum源,安装阿里免费的yum源,然后才能接下来的操作。

原文链接:Linux下的Ruby on Rails环境搭建手册,转载请注明来源!

0