1. 程式人生 > >Ubuntu上安裝gem包時報`require': cannot load such file -- openssl (LoadError)

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目錄下,即前一個問題中執行編譯命令的路徑下。