Message d’erreur: Assurez-vous que `gem install pg -v ‘0.18.1’ réussit avant de regrouper

J’ai un problème avec Ruby. J’ai essayé beaucoup mais rien ne fonctionne pour moi.

Quand je veux démarrer le serveur de rails, je reçois ce message d’erreur:

Une erreur s’est produite lors de l’installation de pg (0.18.1) et Bundler ne peut pas continuer. Assurez-vous que “gem install pg -v ‘0.18.1” réussit avant le regroupement.

C’est ce que j’ai déjà essayé:

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

Lorsque j’essaie d’ gem install pg -v '0.18.1' j’obtiens ce message d’erreur:

Impossible de trouver gem ‘pg (> = 0) ruby’ dans les sources de gemmes listées dans votre Gemfile ou installées sur cette machine. Exécutez l’ bundle install pour installer les gemmes manquantes.

Mais l’ bundle install ne fonctionne pas non plus. Je reçois ce message d’erreur:

Une erreur s’est produite lors de l’installation de pg (0.18.1) et Bundler ne peut pas continuer. Assurez-vous que gem install pg -v '0.18.1' réussit avant de regrouper.

J’ai également essayé de démarrer le serveur dans un nouveau projet Ruby.

Rien n’aide ..

Merci de votre aide!

Ce sont mes changements dans mon Gemfile:

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

Si vous êtes sur Ubuntu , il est fort probable que vous manquiez une dépendance cachée

 sudo apt-get install libpq-dev 

Si vous êtes sous OS X , essayez ces étapes

  • Installez les outils de ligne de commande Xcode (site développeur Apple). Si vous l’avez déjà installé, mettez-le à jour à l’aide de la brew update .
  • brew uninstall postgresql
  • brew install postgresql
  • gem install pg

Si vous êtes un utilisateur Ubuntu, vous devez effectuer les opérations suivantes avant d’installer la gem

 sudo apt-get install libpq-dev 

Ensuite, exécutez gem install pg -v '0.18.1' ou bundle install simplement si vous en avez un dans un fichier GEMFILE.

Si vous utilisez Mac et Homebrew, il semblerait que libpqxx lib soit manquant.

 brew install libpqxx 

Cette commande devrait le faire.

Si vous ne savez pas où se trouve votre pg_config et si vous êtes sur Linux ou Mac, vous pouvez exécuter la commande suivante:

 which pg_config 

cela retournera ==> /usr/pgsql-9.1/bin/pg_config

maintenant utiliser ce chemin comme

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

Fait maintenant l’ bundle install

Mon professeur de Bloc a eu la solution! Si quelqu’un a le même problème, exécutez les commandes suivantes:

  1. spring stop
  2. gem uninstall pg

  3. bundle install --without production

Cela a résolu mon problème.

ARCHFLAGS="-arch x86_64" bundle install fonctionné pour moi, comme discuté ici .

Quiconque accédant à cette application (un an plus tard!) En utilisant Rails 5.1.2, je l’ai fait après avoir d’abord installé et lancé Postgresql (Centos 7). Donc, en supposant que postgresql soit installé et que le serveur postgres et l’utilisateur soient configurés (+ les outils de développement standard habituels pour 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; 

Vous deviendrez automatiquement propriétaire de la nouvelle firebase database si aucun autre argument n’est présenté.

Ou vous pouvez utiliser une interface graphique comme DBeaver pour faire la même chose.

 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:ssortingng email:ssortingng 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. 

Vous trouverez ci-dessous les fichiers Gemfile et config / database.yml que j’ai utilisés pour Rails 5.1.2, y compris les taps pour 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 

Faire tout ce qui précède vous donnera une firebase database dev / prod postgresql dans les rails mais pas de test, vous pouvez également accéder à la firebase database directement depuis les rails en exécutant simplement “rails db” et en entrant le mot de passe.

Il est simple mais vous permet de démarrer rapidement avec rails / postgresql.

Essayez d’installer pg comme ceci:

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

Si ça ne marche pas, essayez

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

Bundler a du mal à identifier le chemin du serveur PostgreSQL. Si vous êtes certain que votre serveur PostgreSQL est correctement installé, il vous suffit d’append le chemin d’access à la variable PATH . Exemple de commande:

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

Si vous rencontrez toujours des problèmes, il est fort probable que l’installation de PostgreSQL ne fonctionne pas. Si c’est le cas, essayez d’installer Postgres.app et exécutez la commande ci-dessous:

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

Assurez-vous que la version est correcte.

Configuration de PostgreSQL sur CentOS 6

 [root@git2 ~]# yum install postgresql-server [root@git2 ~]# 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"? [root@git2 ~]# /etc/init.d/postgresql Usage: /etc/init.d/postgresql {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb} [root@git2 ~]# /etc/init.d/postgresql start /var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first. [FAILED] [root@git2 ~]# service postgresql initdb Initializing database: [ OK ] [root@git2 ~]# [root@git2 ~]# /etc/init.d/postgresql start Starting postgresql service: [ OK ] [root@git2 ~]# psql psql: FATAL: Ident authentication failed for user "root" [root@git2 ~]# [root@git2 ~]# 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) 

Configuration de PostgreSQL sur Fedora 20

 [root@localhost ~]# yum install postgresql-server (snip) [root@localhost ~]# systemctl start postgresql.service Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details. [root@localhost ~]# [root@localhost ~]# 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. [root@localhost ~]# [root@localhost ~]# postgresql-setup initdb Initializing database ... OK [root@localhost ~]# [root@localhost ~]# systemctl start postgresql.service [root@localhost ~]# [root@localhost ~]# systemctl stop postgresql.service [root@localhost ~]# [root@localhost ~]# cp -a /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.orig [root@localhost ~]# # insecure... just for dev... [root@localhost ~]# vim /var/lib/pgsql/data/pg_hba.conf [root@localhost ~]# 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 [root@localhost ~]# [root@localhost ~]# systemctl start postgresql.service [root@localhost ~]# [root@localhost ~]# su - postgres -bash-4.2$ psql -c '\du' List of roles Role name | Atsortingbutes | 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 | Atsortingbutes | 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$