rails&libpq-dev厄介な依存関係


12

この質問がここに属するかどうかはわかりませんが、試してみましょう。こんにちは。私は自分のマシンでWindows Vistaを使用してubuntu 11.10デュアルブートを実行しています。Ubuntuでは、RVM、rails gem、およびPostgreSQL(postgresサーバー、クライアント、およびSoftware Center経由でインストールしたため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が失敗しました*

しばらくの間グーグルと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パッケージを削除する必要があります。削除しても安全だと思いますか?それらの1つを削除しようとしましたが、ソフトウェアセンターはpostgres、openssl-client、smbclient、cups、および他の多くのパッケージも削除することを警告しています。

これを解決するにはどうすればよいですか?そして、dbgemとしてpostgresを使用してrailsアプリを作成するには、ローカルマシンにpg gemをインストールする必要が本当にありますか?代わりにpg gemをherokuに含める責任を「引き渡す」方法はありますか?

回答:


8

実際の解決策は、Amit Patelが正しく指摘しているように、インストールすることですlibpq-dev


開発マシンでpgをセットアップできなかった場合の回避策を次に示します。ローカルマシンでsqliteを、Herokuでpgを使用できます。Gemfileに必要なものは次のとおりです。

group :production do
  gem 'pg'
end

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

そして、このコマンドを使用してバンドルをインストールし、実動gemを無視します。

bundle install --without production

実稼働マシンと開発マシンで同じ環境を使用しないことはお勧めできません。


うん、これは正解です。+1、私はこれを常に行っています。
jrg

@jrgこれを行うことで問題が発生しますか?herokuが「お勧めしません」と言っているのでお願いします。
PatrixCR

通常、サーバーと同じ開発環境を使用するため、Herokuは推奨しません。ただし、ActiveRecordまたはDataMapperを使用していて、生のSQLを記述していない限り、99%は問題ないはずです。:)
jrg

1
@PatrixCRいや、herokuはあなたのためにそれをします。
jrg

1
回避策は、sqliteを使用することです。そのときの解決策は何ですか?
アミットパテル

32

今日も同じ問題が発生しました。サーバー側の拡張機能を構築するにはpostgresql-server-dev-XYを、クライアント側のアプリケーションを構築するにはlibpq-devをインストールする必要があるというメッセージに従いました。 そのため、libpq-devとrailsアプリを再度インストールすると、エラーが消えました。

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

2
開発マシンでpostgresをミラーリングしたい場合、これはより良いソリューションです。
コリンホワイト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.