rails 和 libpq-dev 讨厌的依赖项

Pat*_*xCR 12 package-management rvm postgresql rails kerberos

我不知道这个问题是否属于这里,但我会试一试。你好。我在我的机器上运行 ubuntu 11.10 双引导和 windows vista。在 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 的责任?

Ami*_*tel 32

我今天遇到了同样的问题。我遵循消息您需要安装 postgresql-server-dev-XY 以构建服务器端扩展或 libpq-dev 以构建客户端应用程序。 所以再次安装了 libpq-dev 和 bundle rails app,错误消失了。

$ sudo apt-get install libpq-dev
$ bundle install
Run Code Online (Sandbox Code Playgroud)

  • 如果你想在你的开发机器上镜像 postgres,这是一个更好的解决方案,为我工作。 (2认同)

Ara*_*iri 8

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


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

group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end
Run Code Online (Sandbox Code Playgroud)

并使用此命令安装 bundle 以忽略生产 gems:

bundle install --without production
Run Code Online (Sandbox Code Playgroud)

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