0

I was working on a super simple rails app, had a couple of errors and before I knew it things got out of control. I was having problems with the pg gem, so I went around trying to find a solution. I believe I may have installed something I shouldn't have. After I run

bundle install 

I get this:

LMagnotti$ bundle install
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Resolving dependencies...
Using rake 11.1.2
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.8.4
Using thread_safe 0.3.5
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile2 2.0.0
Using rack 1.6.4
Using mime-types-data 3.2016.0221
Using arel 6.0.3


Your user account isn't allowed to install to the system Rubygems.
  You can cancel this installation and run:

      bundle install --path vendor/bundle

  to install the gems into ./vendor/bundle/, or you can enter your password
  and install the bundled gems to Rubygems using sudo.

  Password: 
Installing ansi 1.5.0
Using debug_inspector 0.0.2
Using sass 3.4.22
Using bundler 1.12.4
Using byebug 9.0.0
Installing coderay 1.1.1
Using coffee-script-source 1.10.0
Using execjs 2.6.0
Using thor 0.19.1
Using concurrent-ruby 1.0.2
Installing ffi 1.9.10 with native extensions
Installing formatador 0.2.5
Installing rb-fsevent 0.9.7
Installing ruby_dep 1.3.1
Installing lumberjack 1.0.10
Installing nenv 0.3.0
Installing shellany 0.0.1
Installing method_source 0.8.2
Installing slop 3.6.0
Using multi_json 1.12.0
Installing ruby-progressbar 1.8.1
Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /private/var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-1hhq594pg-0.18.4/gems/pg-0.18.4/ext
/usr/local/opt/ruby/bin/ruby -r ./siteconf20160517-99984-1fco5r9.rb extconf.rb --with-pg-config=/usr/pgsql-9.1/bin/pg_config
Using config values from /usr/pgsql-9.1/bin/pg_config
sh: /usr/pgsql-9.1/bin/pg_config: No such file or directory
sh: /usr/pgsql-9.1/bin/pg_config: No such file or directory
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/Cellar/ruby/2.3.0/bin/$(RUBY_BASE_NAME)
    --with-pg
    --without-pg
    --enable-windows-cross
    --disable-windows-cross
    --with-pg-config
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-1hhq594pg-0.18.4/extensions/x86_64-darwin-15/2.3.0/pg-0.18.4/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-1hhq594pg-0.18.4/gems/pg-0.18.4 for inspection.
Results logged to /var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-1hhq594pg-0.18.4/extensions/x86_64-darwin-15/2.3.0/pg-0.18.4/gem_make.out
Installing rails_serve_static_assets 0.0.5
Installing rails_stdout_logging 0.0.5
Using tilt 2.0.2
Using spring 1.7.1
Installing sqlite3 1.3.7 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /private/var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-q4b85ssqlite3-1.3.7/gems/sqlite3-1.3.7/ext/sqlite3
/usr/local/opt/ruby/bin/ruby -r ./siteconf20160517-99984-s84g71.rb extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for sqlite3_initialize()... yes
checking for sqlite3_backup_init()... yes
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... no
checking for sqlite3_load_extension()... no
checking for sqlite3_open_v2()... yes
checking for sqlite3_prepare_v2()... yes
checking for sqlite3_int64 in sqlite3.h... yes
checking for sqlite3_uint64 in sqlite3.h... yes
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-q4b85ssqlite3-1.3.7/extensions/x86_64-darwin-15/2.3.0/sqlite3-1.3.7/mkmf.log

current directory: /private/var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-q4b85ssqlite3-1.3.7/gems/sqlite3-1.3.7/ext/sqlite3
make "DESTDIR=" clean

current directory: /private/var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-q4b85ssqlite3-1.3.7/gems/sqlite3-1.3.7/ext/sqlite3
make "DESTDIR="
compiling backup.c
compiling database.c
compiling exception.c
compiling sqlite3.c
compiling statement.c
statement.c:82:13: warning: unused variable 'db' [-Wunused-variable]
  sqlite3 * db;
            ^
statement.c:260:11: warning: implicit declaration of function 'RBIGNUM' is invalid in C99 [-Wimplicit-function-declaration]
      if (RBIGNUM_LEN(value) * SIZEOF_BDIGITS <= 8) {
          ^
./sqlite3_ruby.h:16:24: note: expanded from macro 'RBIGNUM_LEN'
#define RBIGNUM_LEN(x) RBIGNUM(x)->len
                       ^
statement.c:260:11: error: member reference type 'int' is not a pointer
      if (RBIGNUM_LEN(value) * SIZEOF_BDIGITS <= 8) {
          ^~~~~~~~~~~~~~~~~~
./sqlite3_ruby.h:16:36: note: expanded from macro 'RBIGNUM_LEN'
#define RBIGNUM_LEN(x) RBIGNUM(x)->len
                       ~~~~~~~~~~  ^
statement.c:260:32: error: use of undeclared identifier 'SIZEOF_BDIGITS'
      if (RBIGNUM_LEN(value) * SIZEOF_BDIGITS <= 8) {
                               ^
2 warnings and 2 errors generated.
make: *** [statement.o] Error 1

make failed, exit code 2

Gem files will remain installed in /var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-q4b85ssqlite3-1.3.7/gems/sqlite3-1.3.7 for inspection.
Results logged to /var/folders/9k/wywr5gq52gsf8vxlbj5pgzb80000gn/T/bundler20160517-99984-q4b85ssqlite3-1.3.7/extensions/x86_64-darwin-15/2.3.0/sqlite3-1.3.7/gem_make.out
Using rdoc 4.2.2
Using tzinfo 1.2.2
Using nokogiri 1.6.7.2
Using rack-test 0.6.3
Using mime-types 3.0
Using binding_of_caller 0.7.2
Using bootstrap-sass 3.2.0.2
Using coffee-script 2.4.1
Using uglifier 3.0.0
Using sprockets 3.6.0
Installing rb-inotify 0.9.7
Installing notiffany 0.0.8
Installing pry 0.10.3
Installing minitest-reporters 1.0.5
An error occurred while installing pg (0.18.4), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.4'` succeeds before bundling.

Any ideas? Thanks!

Louis Magnotti
  • 431
  • 1
  • 4
  • 19

1 Answers1

1

Most of the times this error

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

happens because you haven't installed all you need to build Postgresql native extension. They are called 'native' because they are compiled in your machine and you need to fulfill all requirements to build them.

If you have installed all the basic developer packages, all you need to do is install the development package for Postgresql.

If you are using a Debian-like Linux (like Ubuntu), do:

sudo apt-get install libpq-dev

If your are with another Linux distribution, try to find the corrrect package. If you are using a Mac, read this.

Community
  • 1
  • 1
Ed de Almeida
  • 3,675
  • 4
  • 25
  • 57