安装pg gem遇到问题

4

我有一个Rails应用程序,我正在尝试在Amazon EC2实例中运行它。该应用程序已经在各种Linux、OS X和Windows系统上进行了适当的测试。

在EC2服务器上,我已经从源代码构建了PostgresSQL 9。起初,“pg” gem无法安装,但我使用以下命令构建了它:

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

你是否安装了Postgres的开发文件?在构建驱动程序时,这些文件是必需的,以便正确构建。 - webjunkie
你是否应该使用 rvm 安装 gem,而不是 gem 工具? - sarnold
是的,我正在使用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 - NJ.
值得一提的是,上个月我终于在我的单个 EC2 实例 (c1.medium) 上安装了 RVM,并使用 Rails (2.x, passenger, Apache) 应用。但就在上个周末 - 在使用率低于平常的情况下 - 服务器负载超过了正常负载的两倍,因此我不得不立即删除 RVM。在投入生产之前,请务必测试性能。EC2 堆栈已经足够慢了。 - Jeremy Weathers
4个回答

8

以下是我在EC2上使用pg gem时的解决方法:

sudo yum install postgresql-devel

4

从错误信息和您对“find”命令输出的描述来看,有可能 /usr/local/pgsql/lib 不在动态链接器搜索库的路径中。尝试将该目录添加到 /etc/ld.so.conf(或类似文件)中,或在运行 rake 之前设置 LD_LIBRARY_PATH 包含它。


这是一个有用的提示,而且是我不知道的。谢谢。 - NJ.
我不得不使用ld.so.conf来完成这个任务。在Ubuntu上,设置LIBPATH和LD_LIBRARY_PATH对我来说无效,原因不明。 - hoyhoy

1
奇怪。我完全退出了RVM,然后按照完全相同的方式重新做了一遍,但这次设置了ARCHFLAGS。我想起来我忘了设置它。
env ARCHFLAGS=" -arch x86_64"

你没有提到这是否成功了。在像MacOS X这样的平台上,你只需要指定架构,这些平台上的Ruby已经编译了多个架构。 - Michael Granger

0
唯一的解决方法是添加符号链接,以便它能够找到它。
ln -s /usr/pgsql-9.2/lib/libpq.so.5.5 /usr/lib/libpq.so.5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接