Подтвердить что ты не робот

Сообщение об ошибке: убедитесь, что `gem install pg -v '0.18.1`` преуспевает до объединения

У меня проблема с рубином. Я много пробовал, но ничего не работает для меня.

Когда я хочу запустить сервер rails, я получаю это сообщение об ошибке:

При установке pg (0.18.1) произошла ошибка, и Bundler не может продолжить. Убедитесь, что "gem install pg -v" 0.18.1 "удастся до объединения".

Это то, что я уже пробовал:

sudo install gem
bundle install
bundle install --path vendor/cache
gem install pg -v '0.18.1'

Когда я пытаюсь gem install pg -v '0.18.1' получить это сообщение об ошибке:

Не удалось найти gem 'pg ( >= 0) ruby' в любом из источников драгоценных камней, перечисленных в вашем Gemfile или установленном на этом компьютере. Запустите bundle install, чтобы установить отсутствующие драгоценные камни.

Но bundle install тоже не работает. Я получаю это сообщение об ошибке:

При установке pg (0.18.1) произошла ошибка, и Bundler не может продолжить. Удостоверьтесь, что gem install pg -v '0.18.1' преуспевает перед связыванием.

Я также попытался запустить сервер в новом проекте ruby.

Ничего не помогает.

Спасибо за вашу помощь!

Это мои изменения в моем Gemfile:

group :production do
   gem 'pg'
   gem 'rails_12factor'
 end

group :development do
   gem 'sqlite3'
 end
4b9b3361

Ответ 1

У моего учителя в блоке было решение! Если у кого-то есть такая же проблема, выполните следующие команды:

  • spring stop
  • gem uninstall pg

  • bundle install --without production

Это решило мою проблему.

Ответ 2

Если вы используете Ubuntu, скорее всего, вам не хватает скрытой зависимости

sudo apt-get install libpq-dev

Если вы находитесь в OS X, попробуйте выполнить следующие действия.

  • Установите инструменты командной строки Xcode (сайт разработчика Apple). Если у вас есть он уже установлен, обновите его с помощью brew update.
  • brew uninstall postgresql
  • brew install postgresql
  • gem install pg

Ответ 3

Если вы являетесь пользователем Ubuntu, вам необходимо выполнить следующую предварительную установку gem

sudo apt-get install libpq-dev

Затем выполните gem install pg -v '0.18.1' или просто bundle install, если у вас есть gem в GEMFILE.

Ответ 4

Если вы используете Mac и Homebrew, то выглядит как libpqxx lib.

brew install libpqxx

Эта команда должна это сделать.

Ответ 5

Если вы не знаете, где находится ваш pg_config, и если вы находитесь на Linux или Mac, вы можете запустить следующую команду:

which pg_config

это вернет == > /usr/pgsql-9.1/bin/pg_config

теперь используйте этот путь как

bundle config build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config

Готово сейчас bundle install

Ответ 6

ARCHFLAGS="-arch x86_64" bundle install работал у меня, как обсуждалось здесь.

Ответ 7

Попробуйте установить pg следующим образом:

gem install pg -- --with-pg-dir=/path/to/postgresql/root

Если это не работает, попробуйте

gem install pg -- --with-pg-include=/path/to/postgresql/root/include \
                  --with-pg-lib=/path/to/postgresql/root/lib

Ответ 8

У Bundler есть некоторая проблема, идентифицирующая путь сервера PostgreSQL. Если вы уверены, что ваш сервер PostgreSQL установлен правильно, все, что вам нужно сделать, должно быть добавлено к этому пути к переменной PATH. Пример команды:

export PATH=/path/to/postgres/bin/:$PATH

Если у вас все еще есть некоторые проблемы, очень вероятно, что у вас что-то не так с установкой PostgreSQL. Если это так, попробуйте установить Postgres.app и выполнить команду, как показано ниже:

export PATH=/Applications/Postgres.app/Contents/Versions/9.3/bin/:$PATH

Убедитесь, что версия верна.

Ответ 9

Настройка PostgreSQL на CentOS 6

[[email protected] ~]# yum install postgresql-server
[[email protected] ~]# psql 
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
[[email protected] ~]# /etc/init.d/postgresql 
Usage: /etc/init.d/postgresql {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb}
[[email protected] ~]# /etc/init.d/postgresql start

/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
                                                           [FAILED]
[[email protected] ~]# service postgresql initdb
Initializing database:                                     [  OK  ]
[[email protected] ~]# 
[[email protected] ~]# /etc/init.d/postgresql start
Starting postgresql service:                               [  OK  ]
[[email protected] ~]# psql 
psql: FATAL:  Ident authentication failed for user "root"
[[email protected] ~]# 
[[email protected] ~]# su - postgres
-bash-4.1$ psql
psql (8.4.13)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privilege
s   
-----------+----------+----------+-------------+-------------+-------------------
----
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postg
res
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postg
res
(3 rows)

postgres=# 
postgres=# \q
-bash-4.1$ 
-bash-4.1$ pwd
/var/lib/pgsql
-bash-4.1$ wget -q http://www.commandprompt.com/ppbook/booktown.sql
-bash-4.1$ ls -lh booktown.sql 
-rw-r--r-- 1 postgres postgres 42K Jan 11  2005 booktown.sql
-bash-4.1$ psql -f booktown.sql 
CREATE DATABASE
(snip)
-bash-4.1$ psql
psql (8.4.13)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privilege
s   
-----------+----------+----------+-------------+-------------+-------------------
----
 booktown  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postg
res
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postg
res
(4 rows)

postgres=# 
postgres=# \q
-bash-4.1$ 
-bash-4.1$ pg_dumpall > /tmp/pg_dumpall.`date +%s`.sql
-bash-4.1$ ls -lh /tmp/pg_dumpall.1349195444.sql 
-rw-r--r-- 1 postgres postgres 44K Oct  2 12:30 /tmp/pg_dumpall.1349195444.sql
-bash-4.1$ 
-bash-4.1$ pg_dump --clean booktown > /tmp/pg_dump-booktown.`date +%s`.sql 
-bash-4.1$ ls -lh /tmp/pg_dump-booktown.1349196164.sql 
-rw-r--r-- 1 postgres postgres 46K Oct  2 12:42 /tmp/pg_dump-booktown.1349196164.sql
-bash-4.1$ 
-bash-4.1$ psql booktown
psql (8.4.13)
Type "help" for help.

booktown=# 
booktown=# \d
(snip)
 public | subjects              | table    | postgres
 public | text_sorting          | table    | postgres

booktown=# SELECT * FROM subjects;
  0 | Arts             | Creativity St
  1 | Business         | Productivity Ave
(snip)

Настройка PostgreSQL на Fedora 20

[[email protected] ~]# yum install postgresql-server
(snip)
[[email protected] ~]# systemctl start postgresql.service
Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.
[[email protected] ~]# 
[[email protected] ~]# systemctl status postgresql.service
postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled)
   Active: failed (Result: exit-code) since Sat 2014-01-18 08:08:38 EST; 12s ago
  Process: 4921 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

Jan 18 08:08:38 localhost.localdomain systemd[1]: Starting PostgreSQL database server...
Jan 18 08:08:38 localhost.localdomain postgresql-check-db-dir[4921]: "/var/lib/pgsql/data" is missing or empty.
Jan 18 08:08:38 localhost.localdomain systemd[1]: postgresql.service: control process exited, code=exited status=1
Jan 18 08:08:38 localhost.localdomain systemd[1]: Failed to start PostgreSQL database server.
Jan 18 08:08:38 localhost.localdomain systemd[1]: Unit postgresql.service entered failed state.
[[email protected] ~]# 
[[email protected] ~]# postgresql-setup initdb
Initializing database ... OK
[[email protected] ~]# 
[[email protected] ~]# systemctl start postgresql.service
[[email protected] ~]# 
[[email protected] ~]# systemctl stop postgresql.service
[[email protected] ~]# 
[[email protected] ~]# cp -a /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.orig
[[email protected] ~]# # insecure... just for dev...
[[email protected] ~]# vim /var/lib/pgsql/data/pg_hba.conf
[[email protected] ~]# diff /var/lib/pgsql/data/pg_hba.conf.orig /var/lib/pgsql/data/pg_hba.conf
80c80
< local   all             all                                     peer
---
> local   all             all                                     trust
82c82
< host    all             all             127.0.0.1/32            ident
---
> host    all             all             127.0.0.1/32            trust
[[email protected] ~]# 
[[email protected] ~]# systemctl start postgresql.service
[[email protected] ~]# 
[[email protected] ~]# su - postgres
-bash-4.2$ psql -c '\du'
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}

-bash-4.2$ psql -c "CREATE ROLE pguser1 UNENCRYPTED PASSWORD 'secret1' NOSUPERUSER CREATEDB CREATEROLE NOINHERIT LOGIN"
CREATE ROLE
-bash-4.2$ psql -c '\du'
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 pguser1   | No inheritance, Create role, Create DB         | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

-bash-4.2$ 
-bash-4.2$ psql -c '\l'
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

-bash-4.2$ 
-bash-4.2$ psql -c "CREATE DATABASE pgdatabase1 WITH OWNER = pguser1"
CREATE DATABASE
-bash-4.2$ psql -c '\l'
                                   List of databases
    Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-------------+----------+----------+-------------+-------------+-----------------------
 pgdatabase1 | pguser1  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
             |          |          |             |             | postgres=CTc/postgres
 template1   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
             |          |          |             |             | postgres=CTc/postgres
(4 rows)

-bash-4.2$ 

Ответ 10

Любой, кто работает с этим (через год!), используя Rails 5.1.2, я сделал следующее после первой установки и запуска Postgresql (Centos 7). Предположим, что у вас уже установлен postgresql, и настроен сервер postgres & user (+ обычные стандартные инструменты для разработчиков Linux).

Add extra deps for rails to build gems.

$ sudo yum install postgresql-devel

Add postgres path in ~/.profile   

export PATH=/usr/bin/postgres:$PATH  (or your installed path)

Add another user/role with create db privileges using pgAdmin or shell
(should be the same user as the system/rails user because the postgres user doesn't have permissions for /rails/db/schema.rb, but the system/rails user does)

Below are shell commands for postgres create role and database.

$ sudo -u postgres psql (enter postgres password)
$ create role (linux/rails user) with createdb login password 'password';
$ \du  (check its done and has createDB privs)
$ CREATE DATABASE name;

Вы автоматически станете владельцем новой базы данных, если другие аргументы не представлены.

Или вы можете использовать gui как DBeaver, чтобы сделать то же самое.

So the above sets up for rails to access postgresql and build the pg gem once you've swapped out the default Gemfile & config/database.yml

Now create app and set it up (no need for -d postgresql flag because we swap out the Gemfile and the config/database.yml file contents completely and rails will install a postgresql db on bundle update/install.

(change some to rake for earlier versions of rails)

$ rails new app
$ cd app
$ atom (or editor) Gemfile config/database.yml
Swap out both file contents (to ones shown below) & save.
$ bundle update
$ bundle install

Check it with

$ rails db:create

(postgresql database should now be connected), so scaffold something

$ rails g scaffold Users name:string email:string comment:text
$ rails db:migrate
$ rails server

http://localhost:3000 shows the default page and http://localhost:3000/users brings up your new Users page using postgresql not sqlite3. Put something in to test it.

Ниже приведены файлы Gemfile и config/database.yml, которые я использовал для Rails 5.1.2, включая краны для Heroku.

Gemfile rails 5.1.2

 source 'https://rubygems.org'

    gem 'rails',        '5.1.2'
    gem 'puma',         '3.9.1'
    gem 'sass-rails',   '5.0.6'
    gem 'uglifier',     '3.2.0'
    gem 'coffee-rails', '4.2.2'
    gem 'jquery-rails', '4.3.1'
    gem 'turbolinks',   '5.0.1'
    gem 'jbuilder',     '2.7.0'
    gem 'taps'

    #Postgresql Database
    group :production do
    gem 'pg', '0.21.0'
    end

    group :development, :test do
      gem 'sqlite3', '1.3.13'
      gem 'byebug',  '9.0.6', platform: :mri
    end

    group :development do
      gem 'web-console',           '3.5.1'
      gem 'listen',                '3.0.8'
      gem 'spring',                '2.0.2'
      gem 'spring-watcher-listen', '2.0.1'
    end
    # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
    gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

config/database.yml file contents (watch out for indentation)

development:
    adapter: postgresql
    encoding: unicode
    database: development or app_name
    pool: 5
    username: (user created for postgres/rails)
    password: password
    host: localhost


test:
    adapter: postgresql
    encoding: unicode
    database: development or app_name
    pool: 5
    username: (user created for postgres/rails)
    password: password
    host: localhost


production:
    adapter: postgresql
    encoding: unicode
    database: development or app_name
    pool: 5
    username: (user created for postgres/rails)
    password: password
    host: localhost

Выполняя все это, вы получите базу данных dev/prod postgresql в рельсах, но без теста, вы также можете получить доступ к базе данных непосредственно из рельсов, просто запустив "rails db" и введя пароль.

Просто, но быстро и быстро запускается с помощью rails/postgresql.