Rails和libpq-dev讨厌的依赖


12

我不知道这个问题是否属于这里,但我会尝试一下。你好 我正在计算机上运行带有Windows Vista的ubuntu 11.10双启动。在Ubuntu上,我已经安装了RVM,rails gem和PostgreSQL(postgres服务器,客户端和其他软件包,例如libpq5,因为我是通过软件中心安装的)。

我正在尝试在heroku上部署我的应用程序,但是似乎我需要安装pg gem。我尝试安装它,但是却收到此错误:

错误:无法生成gem本机扩展。

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb检查pg_config ...是

使用/ usr / bin / pg_config中的配置值

您需要安装postgresql-server-dev-XY来构建服务器端扩展,或者安装libpq-dev来构建客户端应用程序。您需要安装postgresql-server-dev-XY来构建服务器端扩展,或者安装libpq-dev来构建客户端应用程序。

检查libpq-fe.h ... * extconf.rb失败*

在搜索google和stackoverflow一段时间后,许多人说必须安装libpq-dev。我通过软件中心尝试过,但是未能满足依赖项要求。我通过apt-get尝试过,它说我需要libkrb5-dev和krb5-multidev。我试过了sudo apt-get install libpq-dev libkrb5-dev krb5-multidev,得到了:

以下软件包具有未满足的依赖项:krb5-multidev:

取决于:libkrb5-3(= 1.9.1 + dfsg-1ubuntu1)但要安装1.9.1 + dfsg-1ubuntu2.1

取决于:libk5crypto3(= 1.9.1 + dfsg-1ubuntu1)但要安装1.9.1 + dfsg-1ubuntu2.1

取决于:libgssapi-krb5-2(= 1.9.1 + dfsg-1ubuntu1)但要安装1.9.1 + dfsg-1ubuntu2.1 E:无法纠正问题,您拿着损坏的包装。

但是我的系统上已经有了libkrb5-3,libk5crypto3和libgssapi-krb5-2(所有版本均为1.9.1 + dfsg-1ubuntu2.1)!我认为也许所需的版本是1.9.1 + dfsg-1ubuntu1。因此,也许我必须先删除1.9.1 + dfsg-1ubuntu2.1软件包。您认为我删除它安全吗?我试图删除其中之一,但是软件中心警告我,它也会删除postgres,openssl-client,smbclient,cups和许多其他软件包。

我应该怎么做才能解决这个问题?而且,是否真的需要在本地计算机上安装pg gem才能将Postgres作为dbms创建rails应用程序?有没有办法将pg gem包括在内的责任“移交给” heroku?

Answers:


8

正如Amit Patel正确指出的那样,真正的解决方案是安装libpq-dev


如果您无法在开发机器上设置pg,这是一种解决方法。您可以在本地计算机中使用sqlite,在Heroku中使用pg。这是您的Gemfile中应该包含的内容

group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end

并使用以下命令安装捆绑软件以忽略生产宝石:

bundle install --without production

请记住,不建议在生产和开发机器中使用相同的环境。


是的,这是正确的答案。+1,我现在一直在这样做。
jrg 2012年

@jrg这样做会遇到一些问题吗?我问是因为heroku说“不推荐”。
PatrixCR

Heroku不建议这样做,因为通常您希望与服务器具有相同的开发环境-但是,只要您使用的是ActiveRecord或DataMapper,而且您没有编写原始的SQL,那么在99%的时间里就可以了。:)
jrg 2012年

1
@PatrixCR不,heroku将为您做到这一点。
jrg 2012年

1
解决方法是使用sqlite。那有什么解决办法呢?
阿米特·帕特尔

32

我今天也遇到同样的问题。我遵循了一条消息,您需要安装postgresql-server-dev-XY来构建服务器端扩展,或者安装libpq-dev来构建客户端应用程序。 因此,再次安装了libpq-dev并捆绑了rails app,错误消失了。

$ sudo apt-get install libpq-dev
$ bundle install

2
如果您想在开发机器上镜像postgres,这是一个更好的解决方案,对我有用。
Collin White'9
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.