【问题标题】:Problem installing pg gem properly正确安装 pg gem 的问题
【发布时间】:2013-07-09 06:03:33
【问题描述】:

我有一个 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 的开发文件?构建驱动程序时,需要这些文件才能正确构建。
  • 您应该使用rvm 来安装gem,而不是使用gem 工具吗?
  • 是的。我正在使用 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
  • FWIW,上个月我终于开始在我的单个 EC2(c1.medium 实例)Rails(2.x,passenger,Apache)应用程序上安装 RVM。在周末 - 使用率低于正常水平 - 服务器负载是正常(工作日)负载的两倍多,所以我不得不立即删除 RVM。在将其投入生产之前,您需要测试性能。 EC2 堆栈已经够慢了。

标签: ruby-on-rails linux postgresql amazon-ec2 pg


【解决方案1】:

在 EC2 for pg gem 上为我做了诀窍:

sudo yum install postgresql-devel

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是一个有用的提示,但我不知道。谢谢。
    • 我必须使用 ld.so.conf 来执行此操作。由于某种原因,在 Ubuntu 上设置 LIBPATH 和 LD_LIBRARY_PATH 对我不起作用。
    【解决方案3】:

    很奇怪。我完全退出了 RVM,并以完全相同的方式重新进行了所有操作,但这次使用的是 ARCHFLAGS 集。我突然想到我忘了设置它。

    env ARCHFLAGS=" -arch x86_64"
    

    【讨论】:

    • 你没有提到这是否成功。您应该只需要在 MacOS X 等平台上指定架构,这些平台具有使用多个架构编译的 Ruby。
    【解决方案4】:

    我可以解决这个问题的唯一方法是添加一个符号链接以便它可以找到它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 2013-02-20
      • 2015-03-16
      • 2012-11-18
      • 1970-01-01
      相关资源
      最近更新 更多