2011-06-14 128 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