rails & libpq-dev неприятные зависимости

12

Я не знаю, принадлежит ли этот вопрос здесь, но я сделаю снимок. Здравствуй. Я использую двойную загрузку Ubuntu 11.10 с Windows Vista на моей машине. В Ubuntu я установил RVM, rails gem и PostgreSQL (сервер postgres, клиент и другие пакеты, такие как libpq5, потому что я установил его через Центр программного обеспечения).

Я пытаюсь развернуть свое приложение на heroku, но, похоже, мне нужно установить pg 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 на мою локальную машину, чтобы создать приложение rails с postgres как dbms? Есть ли способ «передать» ответственность, чтобы вместо этого включить pg gem в heroku?

PatrixCR
источник

Ответы:

8

Настоящее решение, как правильно указал Амит Патель , заключается в установкеlibpq-dev


Вот обходной путь, если вы не смогли настроить pg на своей машине разработки. Вы можете использовать sqlite на своем локальном компьютере и pg в Heroku. Вот что вы должны иметь в своем Gemfile

group :production do
  gem 'pg'
end

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

И используйте эту команду для установки комплекта, чтобы игнорировать производственные гемы:

bundle install --without production

Пожалуйста, имейте в виду, что не рекомендуется использовать одну и ту же среду на машинах производства и разработки.

Араш Бади Модири
источник
Да, это правильный ответ. +1, я делаю это все время.
JRG
@jrg у вас возникают проблемы с этим? Я спрашиваю, потому что геройку говорит "это не рекомендуется".
PatrixCR
Heroku не рекомендует его, потому что, как правило, вы хотите иметь ту же среду разработки, что и на сервере - однако, если вы используете ActiveRecord или DataMapper и не пишете необработанный SQL, у вас все будет хорошо в 99% случаев. :)
Jrg
1
@PatrixCR Нет, герою сделает это за тебя.
JRG
1
Использование sqlite - это обходной путь. Каково решение тогда?
Амит Патель
32

У меня сегодня такая же проблема. Я следовал за сообщением Вам необходимо установить postgresql-server-dev-XY для создания расширения на стороне сервера или libpq-dev для создания приложения на стороне клиента. Поэтому снова установили приложение libpq-dev и bundle rails и ошибка исчезла.

$ sudo apt-get install libpq-dev
$ bundle install
Амит Патель
источник
2
Это лучшее решение, если вы хотите отразить postgres на своей машине разработки, сработало для меня.
Коллин Уайт