Ubuntu上安裝gem包時報`require': cannot load such file -- openssl (LoadError)
參考:https://www.ruby-lang.org/zh_cn/downloads/
在安裝一個gem (其它時候也會報這個錯誤) 時報裡如標題所示到錯誤,於是網上搜索裡一下,發現需要安裝libssl-dev,於是果斷執行命令: sudo apt-get install libssl-dev 進行安裝,安裝完後需要編譯:
a. 進入ruby原始碼目錄 cd /opt/dev/ruby-2.1.2//ext/openssl (具體目錄根據實際情況);
b. 執行編譯並安裝命令:
ruby extconf.rb
make
make install
正常過程到這裡就修復了標題所示的錯誤,並可正常安裝gem了。
但是在make的過程中又出現了另外一個問題:make: *** 沒有規則可以建立“ossl.o”需要的目標“/thread_native.h”。 停止。
原因是: MakeFile 檔案中的最後一行
ossl.o: $(top_srcdir)/thread_native.h $(top_srcdir)/thread_$(THREAD_MODEL).h
編譯時找不到$(top_srcdir)指定目錄中的thread_native.h,即$(top_srcdir)沒有指向正確路徑。
然後我發現那個檔案在ruby原始碼根目錄下(參照上一個問題到a步驟),於是手動將MakeFile中的那一行根據實際路徑改為:
ossl.o: ../../thread_native.h ../../thread_$(THREAD_MODEL).h (注: 具體路徑視實際情況而定)
儲存檔案後重新執行make命令,該命令順利執行,接著執行make install 命令,openssl安裝完成;再回歸到上一個問題,重新安裝gem,安裝成功!
注: MakeFile檔案在ruby原始碼中的openssl目錄下,即前一個問題中執行編譯命令的路徑下。