Ruby 開發環境安裝linux、mac,遇到的錯誤總結(使後人避免入坑)
一、linux安裝ruby時遇到的錯誤
首先講一下為什麼不寫Windows的,個人建議,最好不要用Windows環境,問題很多,需要安裝的東西更多,而且未知的錯誤多,網上不一定查的到,我也安裝過Windows的,也成功過,但是,有時執行會報錯,後來放棄了,安了個Linux的,再後來用了mac系統,簡直爽的飛起,閒話不多說,步入正題,Linux下安裝步驟,其實也挺簡單,就是有時會遇到錯誤,我經歷的,把這個寫下來,以便後人順利把錯誤解決好,我也是找了好久谷歌才找到解決方案,媽媽呀
1、安裝ruby
1、安裝rvm
rvm是一個命令列工具,可以提供一個便捷的多版本 Ruby
如果你打算學習 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:
- 下載並安裝RubyMine 2018 Linux。
- 將JETBealScRACK.JAR複製到RubyMine 2018/bin
- 在資料夾RubyMine 2018/bin中編輯檔案“RubyMine.vmoptions”(或“RubyMine64.vmoptions”): 在檔案末尾新增 -javaAgent:RubyMine 2018/bin / JetbrainsCrack.jar(根據具體安裝目錄新增)
- 執行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檔案
-----------生活感悟-----------
有自信是好事,但不要過度自信,認為別人都是垃圾
這樣會使人產生厭惡