2011-06-14 192 views
3

我有一個rails應用程序,我試圖在Amazon EC2實例中運行。此應用程序已在各種Linux,OS X和Windows系統上正確測試。正確安裝pg gem

在EC2服務器上,我從源碼構建了PostgresSQL 9。起初,'pg'寶石不會安裝,但我使用以下命令構建它:

gem install pg -- --with-pgsql-lib=/usr/local/pgsql/lib --with-pgsql-config=/usr/local/pgsql/bin/pg_config 

這似乎是正確構建的。但是,當我運行rake任務時,如'rake db:migrate',我得到以下錯誤:

rake aborted! 
libpq.so.5: cannot open shared object file: No such file or directory - /home/ec2-user/.rvm/gems/ruby-1.8.7-p334/gems/pg-0.11.0/lib/pg_ext.so 
+0

你有沒有安裝Postgres的開發文件?構建驅動程序時,需要這些文件才能正確構建。 – webjunkie 2011-06-14 23:41:20

+0

如果您使用'rvm'來安裝gem,而不是'gem'工具? – sarnold 2011-06-15 00:04:36

+0

是的。我正在使用RVM。另請參閱find命令的輸出:sudo find/-name libpq.so.5 -ls 153069 0 lrwxrwxrwx 1 postgres postgres 12 Jun 10 04:46 /usr/local/pgsql/lib/libpq.so.5 - > libpq.so.5.3 – 2011-06-15 00:14:25

回答

4

從錯誤信息,你對你的「發現」命令輸出的描述,它可能是/usr/local/pgsql/lib是不是在路漫漫其庫動態鏈接器的搜索。嘗試將該目錄添加到/etc/ld.so.conf(或類似),或者在運行rake之前設置LD_LIBRARY_PATH以包含它。

+0

這是一個有用的提示和我不知道的東西。謝謝。 – 2011-06-16 03:55:12

+0

我不得不使用ld.so.conf來做到這一點。出於某種原因,在Ubuntu上設置LIBPATH和LD_LIBRARY_PATH不適用於我。 – hoyhoy 2011-07-06 18:50:05

1

奇怪。我完全退出了RVM並重新執行了所有操作,但是這次使用ARCHFLAGS進行了設置。我想到我忘了設置它。

env ARCHFLAGS=" -arch x86_64" 
+0

你還沒有提到這是否成功。您應該只需要在MacOS X等平臺上指定體系結構,這些平臺具有用多種體系結構編譯的Ruby。 – 2011-06-15 13:16:46

0

我可以解決這個問題的唯一方法是通過添加一個符號鏈接來找到它。

ln -s /usr/pgsql-9.2/lib/libpq.so.5.5 /usr/lib/libpq.so.5 
7

爲我做的對EC2爲PG寶石的伎倆:

sudo yum install postgresql-devel