2012-07-30 26 views
1

安裝PG寶石後,當我嘗試啓動服務器,我的本地計算機上我得到這個錯誤:如何在/ usr/lib中卸載openssl?

/Users/foo/.rvm/gems/ree-1.8.7-2011.12/gems/pg-0.14.0/lib/pg_ext.bundle: dlopen(/Users/foo/.rvm/gems/ree-1.8.7-2011.12/gems/pg-0.14.0/lib/pg_ext.bundle, 9): Library not loaded: @loader_path/../lib/libssl.dylib (LoadError) 
Referenced from: /usr/lib/libpq.5.dylib 
Reason: Incompatible library version: libpq.5.dylib requires version 1.0.0 or later, but libssl.dylib provides version 0.9.8 - /Users/foo/.rvm/gems/ree-1.8.7-2011.12/gems/pg-0.14.0/lib/pg_ext.bundle 

我的MacPorts通過有多達安裝在我的機器上的OpenSSL的最新版本,但它好像gem正在查看我已經安裝在/ usr/lib中的舊版本(出於某種原因)(可能是因爲@loader_path搞砸了嗎?)。

'OpenSSL的版本' 給我 '的OpenSSL 1.0.1c 10 2012年5月'

和 'OpenSSL將' 給我 '的/ opt/local/bin目錄/ OpenSSL的' 如我所料

任何幫助非常感謝。謝謝!

+0

不要刪除它來自'/ usr/lib'。這是操作系統所擁有的,任何需要它的應用程序如果沒有找到它將會失敗,這會讓你感到後悔。這是像'libssl'這樣的庫文件的標準位置。由MacPorts安裝的版本位於可選位置,因此您必須在安裝Pg文件時告訴Gem在哪裏查看。 – 2012-07-30 16:43:33

+0

你試過'$ gem update libssl'嗎? – AJcodez 2012-07-30 17:33:36

回答

2

我剛更新到Mountain Lion後遇到了這個問題。在檢查我有適當的OpenSSL版本後,我做了以下操作。

$ ls /Library/PostgreSQL/9.1/lib/libssl* 

規定如下:

/Library/PostgreSQL/9.1/lib/libssl.1.0.0.dylib 
/Library/PostgreSQL/9.1/lib/libssl.dylib 
/Library/PostgreSQL/9.1/lib/libssl.a 

我複製的文件爲這樣:

$ sudo cp /Library/PostgreSQL/9.1/lib/libssl.1.0.0.dylib /usr/lib/ 

然後鏈接:

$ cd /usr/lib 
$ ln -sf libssl.1.0.0.dylib libssl.dylib 

在那之後,我再次嘗試rails s和相同的錯誤凸輪Ë了一個不同的文件,所以我重複這個過程(libcrypto):

requires version 1.0.0 or later, but libcrypto.0.9.8.dylib 
provides version 0.9.8 

這樣:

$ sudo cp /Library/PostgreSQL/9.1/lib/libcrypto.1.0.0.dylib /usr/lib/ 
$ cd /usr/lib 
$ ln -sf libcrypto.1.0.0.dylib libcrypto.dylib 

看到這個問題的參考答案以及: python pip install psycopg2 install error