1. 程式人生 > >Ruby 開發環境安裝linux、mac,遇到的錯誤總結(使後人避免入坑)

Ruby 開發環境安裝linux、mac,遇到的錯誤總結(使後人避免入坑)

一、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 <
[email protected]
>, Michal Papis <[email protected]> [https://rvm.io/]

差不多這個樣子,如果正確安裝的話,好了,rvm現在算是安裝完成,接著下一步,我很不幸的中槍了遇到了錯誤@[email protected]

接著$ 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

    $ gem install 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檔案

    

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

有自信是好事,但不要過度自信,認為別人都是垃圾

這樣會使人產生厭惡