一、linux安装ruby时遇到的错误

首先讲一下为什么不写Windows的,个人建议,最好不要用Windows环境,问题很多,需要安装的东西更多,而且未知的错误多,网上不一定查的到,我也安装过Windows的,也成功过,但是,有时运行会报错,后来放弃了,安了个Linux的,再后来用了mac系统,简直爽的飞起,闲话不多说,步入正题,Linux下安装步骤,其实也挺简单,就是有时会遇到错误,我经历的,把这个写下来,以便后人顺利把错误解决好,我也是找了好久谷歌才找到解决方案,妈妈呀

1、安装ruby

1、安装rvm

rvm是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换。

    https://rvm.io/

如果你打算学习 Ruby / Rails, RVM 是必不可少的工具之一。现在进行安装:

   

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    ------
    $ curl -sSL https://get.rvm.io | bash -s stable
    # 如果上面的连接失败,可以尝试: 
    $ curl -L https://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable

好的,现在应该是顺利安装了rvm,让我们来验证一下,首先加载rvm环境资源

$ source ~/.rvm/scripts/rvm

ok!,那么查看一下rvm的版本,看看能不能识别到:

$ rvm -v
rvm 1.22.17 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

差不多这个样子,如果正确安装的话,好了,rvm现在算是安装完成,接着下一步,我很不幸的中枪了遇到了错误@_@

接着$ rvm requirements 检查一下依赖,如果没报错,说明没啥问题,我当时也这么认为.....
然后安装ruby,以2.2.3为例,执行:
$ rvm install 2.2.3      (指定ruby版本)
不幸发生了,报错,还是一堆错误,如下,如果你和我有一样的错误,别急,等下我说解决方案:
 
错误: 

 EVP_MD_CTX_init(EVP_MD_CTX *ctx); 

      ^ 

openssl_missing.h:90:6: error: expected declaration specifiers or ‘...’ before ‘(’ token 

 void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); 

      ^ 

In file included from ossl.h:236:0, 

                 from ossl_x509cert.c:10: 

ossl_pkey.h:45:5: warning: this use of "defined" may not be portable [-Wexpansion-to-defined] 

 #if HAVE_BN_GENCB 

     ^~~~~~~~~~~~~ 

ossl_pkey.h:45:5: warning: this use of "defined" may not be portable [-Wexpansion-to-defined] 

ossl_pkey.h:45:5: warning: this use of "defined" may not be portable [-Wexpansion-to-defined] 

ossl_x509cert.c: In function ‘DupX509CertPtr’: 

ossl_x509cert.c:125:5: warning: implicit declaration of function ‘CRYPTO_add’; did you mean ‘CRYPTO_free’? [-Wimplicit-function-declaration] 

     CRYPTO_add(&x509->references, 1, CRYPTO_LOCK_X509); 

     ^~~~~~~~~~ 

     CRYPTO_free 

ossl_x509cert.c:125:21: error: dereferencing pointer to incomplete type ‘X509 {aka struct x509_st}’ 

     CRYPTO_add(&x509->references, 1, CRYPTO_LOCK_X509); 

                     ^~ 

ossl_x509cert.c:125:38: error: ‘CRYPTO_LOCK_X509’ undeclared (first use in this function); did you mean ‘CRYPTO_LOCK’? 

     CRYPTO_add(&x509->references, 1, CRYPTO_LOCK_X509); 

                                      ^~~~~~~~~~~~~~~~ 

                                      CRYPTO_LOCK 

ossl_x509cert.c:125:38: note: each undeclared identifier is reported only once for each function it appears in 

Makefile:301: recipe for target 'ossl_x509cert.o' failed 

make[2]: *** [ossl_x509cert.o] Error 1 

make[2]: Leaving directory '/home/suchao/.rvm/src/ruby-2.3.3/ext/openssl' 

exts.mk:210: recipe for target 'ext/openssl/all' failed 

make[1]: *** [ext/openssl/all] Error 2 

make[1]: *** Waiting for unfinished jobs.... 

installing default nkf libraries 

linking shared-object nkf.so 

make[2]: Leaving directory '/home/suchao/.rvm/src/ruby-2.3.3/ext/nkf' 

make[1]: Leaving directory '/home/suchao/.rvm/src/ruby-2.3.3' 

uncommon.mk:203: recipe for target 'build-ext' failed 

make: *** [build-ext] Error 2



++ return 2

其实问题大致也能看懂,和openssl有关,应该是rvm默认的openssl没有找到,需要我们自己指定添加,然后百度、谷歌.........ing

最终被我在万能的stack overflow 上找到了解决方案,如下-----------

先执行:rvm pkg install openssl  先安装一下

然后:

$  rvm install 2.2.3 --with-openssl-dir=$HOME/.rvm/usr

$ rvm use 2.3.0 --default       (设置ruby默认版本,后续如果需要安装多版本ruby,就用rvm来切换管理)

$ ruby -v

ruby 2.3.0 ...

$ gem -v

    2.1.6

$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

    安装bundler(自动帮你安装各种所需gem的神器)

$ gem install bundler
当当当,奇迹出现,安装ruby成功了,6不6,哎,没毛病、老铁,别高兴太早,,,还有rails,众所周知,rails是ruby著名且最常用的web框架,可以很轻松的开发web系统,我们公司现在有前后端没分离的项目在用rails,也有前后分离的,用rails写后端接口,很方便的,闲话不多说,

2、安装rails

 --version=3.2.1)

漫长的等待.........假装有个漏斗

测试一下:

    $ rails -v

    Rails 4.2.5

完成done!!!然后开始你的 Ruby,Rails 之旅吧。 欢迎来到 Ruby 的世界!

最后记一下linux安装rubymine吧,一个很好用的ide对于我这种菜鸟来说,大神基本都用文本编辑器

3、Linux安装rubymine

1、下载jdk1.8.从官网,首先,当然是要下载了

    地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html



按照需要选择不同的版本, 将下载下来的 .tar.gz 文件解压。 使用如下命令解压:

     sudo tar zxvf ./jdk-7u45-linux-x64.tar.gz 

为了方便管理,可将解压后的文件移至另一个文件夹。不做也行。 

笔者将文件移至了 /opt/Java/jdk/ 目录下。为了方便下一步设置环境变量,将文件夹换了个短点的名字 —— jdk1.7

可使用如下命令对文件夹重命名 sudomv jdk1.7.0_45/ jdk1.7/ 

2、设置环境变量 

编辑 .bashrc 文件, 在终端输入如下命令: vi ~/.bashrc 

在该文件的末尾,加上以上几行代码:

export JAVA_HOME=/opt/Java/jdk/jdk1.7 
    export CLASSPATH=${JAVA_HOME}/lib 
    export PATH=${JAVA_HOME}/bin:$PATH

3、jdk设置完后,安装rubymine

1. 下载并安装RubyMine 2018 Linux。 
2. 将JETBealScRACK.JAR复制到RubyMine 2018/bin 
3. 在文件夹RubyMine 2018/bin中编辑文件“RubyMine.vmoptions”(或“RubyMine64.vmoptions”): 在文件末尾添加    -javaAgent:RubyMine 2018/bin / JetbrainsCrack.jar(根据具体安装目录添加) 
4. 运行RubyMine 2018,输入任意字符注册激活即可。

运行rails server时如果报错:

在linux下运行rails server 出现There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)

原因是缺少依赖的组件nodejs 运行sudo apt-get install nodejs 安装nodejs,再重新运行rails server即可



二、mac下注意的问题

大致安装过程和上述差不多,只不过mac下使用homebrew包管理器安装

1、先安装Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装一些依赖:

$ brew install libxml2 libxslt libiconv

然后重复上述操作,

值得一提的是Homebrew从今年3月份改东西了应该是,我在安装iterm2时出现了错误,大致是没有找到包,

应该是用cask安装

Cask 常用软件

brew cask install iterm2         #安装iTerm 2
brew cask install launchrocket   #管理软件后台服务
brew cask install google-chrome  #安装Chrome
brew cask install the-unarchiver #解压软件
brew cask install alfred         #效率软件
brew cask install qq             #腾讯QQ
brew cask install evernote       #云笔记软件
brew cask install sublime-text   #文本编辑器
brew cask install skitch         #ervernote配套的截图软件
brew cask install dropbox        #文件同步软件
brew cask install zotero         #网页收藏与文献管理软件
brew cask install anki           #记忆软件
brew cask install virtualbox     #虚拟机,可以装个Windows
brew cask install self-control   #避免分心的软件
brew cask install vlc            #视频软件
brew cask install appcleaner     #应用清理
#Quick Look 系列
brew cask install qlcolorcode    #预览脚本时自动代码配色
brew cask install qlstephen      #预览未知拓展名的纯文本文件
brew cask install qlmarkdown     #预览Markdown文件
brew cask install quicklook-json #预览JSON文件
brew cask install quicklook-csv  #预览CSV文件

    

-----------生活感悟-----------

有自信是好事,但不要过度自信,认为别人都是垃圾

这样会使人产生厌恶