Installing Pg gem for PostGreSQL 8.4

Discussion in 'Ruby' started by Saeed Bhuta, Feb 26, 2010.

  1. Saeed Bhuta

    Saeed Bhuta Guest

    Hi All,

    I want to save data from a ruby script into a table in a PostGreSQL 8.4
    database.

    After looking into PostGreSQL connectivity in Ruby, I have come accross
    the 'pg' gem.

    I attempted to install the gem with the command: 'sudo gem install pg'
    but got the following error:
    sudo gem install pg
    Building native extensions. This could take a while...
    ERROR: Error installing pg:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby1.8 extconf.rb
    checking for main() in -lpq... no
    checking for main() in -llibpq... no
    checking for main() in -lms/libpq... no
    *** 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
    --without-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/bin/ruby1.8
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pqlib
    --without-pqlib
    --with-libpqlib
    --without-libpqlib
    --with-ms/libpqlib
    --without-ms/libpqlib
    Could not find PostgreSQL build environment (libraries & headers):
    Makefile not created


    Gem files will remain installed in /var/lib/gems/1.8/gems/pg-0.8.0 for
    inspection.
    Results logged to /var/lib/gems/1.8/gems/pg-0.8.0/ext/gem_make.out

    Would appreciate it if someone could point me in the right direction.

    Saeed.
     
    Saeed Bhuta, Feb 26, 2010
    #1
    1. Advertisements

  2. [Note: parts of this message were removed to make it a legal post.]

    Are you installing this on a mac, windows or a linux environment? You may
    need to make sure your C/C++ compiler is configured on the platform for the
    native extensions to compile and install.

    Thanks, Shashank
     
    Shashank Tiwari, Feb 26, 2010
    #2
    1. Advertisements

  3. Saeed Bhuta

    Saeed Bhuta Guest

    Hi Shashank,

    Thanks for replying. I'm using Linux Ubuntu Karmic Koala.

    Saeed.
     
    Saeed Bhuta, Feb 26, 2010
    #3
  4. you need to install the postgresql development packages
     
    Reid Thompson, Feb 26, 2010
    #4
  5. Saeed Bhuta

    Saeed Bhuta Guest

    you need to install the postgresql development packages

    I think I've done this already. Nonetheless, I'm going to try and
    install it again. Do you know the name of the development packages?

    Thanks,

    Saeed.
     
    Saeed Bhuta, Mar 1, 2010
    #5
  6. Saeed Bhuta

    Saeed Bhuta Guest

    I just installed the 'libecpg-dev' package and am now getting the
    following error when trying to install the pg gem:

    "sudo gem install pg
    Building native extensions. This could take a while...
    ERROR: Error installing pg:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby1.8 extconf.rb
    checking for pg_config... yes
    checking for libpq-fe.h... yes
    checking for libpq/libpq-fs.h... yes
    checking for PQconnectdb() in -lpq... no
    checking for PQconnectdb() in -llibpq... no
    checking for PQconnectdb() in -lms/libpq... no
    Can't find the PostgreSQL client library (libpq)
    *** 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
    --without-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/bin/ruby1.8
    --with-pg
    --without-pg
    --with-pg-config
    --without-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
    --enable-static-build
    --disable-static-build
    --with-pqlib
    --without-pqlib
    --with-libpqlib
    --without-libpqlib
    --with-ms/libpqlib
    --without-ms/libpqlib


    Gem files will remain installed in /var/lib/gems/1.8/gems/pg-0.9.0 for
    inspection.
    Results logged to /var/lib/gems/1.8/gems/pg-0.9.0/ext/gem_make.out"
     
    Saeed Bhuta, Mar 1, 2010
    #6
  7. Run this...
    $ dpkg --get-selections
    and paste the results in a pastebin.

    At this point, the gems is stating that it cannot find libpq ( the
    postgresql C client library ). Do you have the postgresql client
    packages installed?

    reid
     
    Reid Thompson, Mar 1, 2010
    #7
  8. I believe the libecpg-dev package would only provide the required
    packages for developing embedded sql programs.

    Open synaptic, scroll down to the postgresql section, and look at the
    available packages. Make sure you have appropriate server and client
    packages installed as well as their associated dev packages.
     
    Reid Thompson, Mar 1, 2010
    #8
  9. Saeed Bhuta

    Saeed Bhuta Guest

    Here is the result of the '$ dpkg --get-selections' command;
    http://pastebin.com/6SRaW4KL

    Looked in Synaptic, seemed like all the right server and client packages
    were installed.
     
    Saeed Bhuta, Mar 1, 2010
    #9
  10. Looks like you're missing the libpq5 and libpq-dev packages.
     
    Lars Haugseth, Mar 1, 2010
    #10
  11. Saeed Bhuta

    Saeed Bhuta Guest

    When I try to install them using the command:

    sudo apt-get libpq5 libpq-dev

    I get the message;

    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    libpq5 is already the newest version.
    libpq-dev is already the newest version.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

    :S
     
    Saeed Bhuta, Mar 1, 2010
    #11
  12. pastebin the output of

    $ apt-cache search postgresql
     
    Reid Thompson, Mar 1, 2010
    #12
  13. Saeed Bhuta

    Saeed Bhuta Guest

    http://pastebin.com/7qCufpx1

    I don't think that is all of the output, I copied what was displayed on
    the terminal.

    Many Thanks,

    Saeed
     
    Saeed Bhuta, Mar 1, 2010
    #13
  14. what do the following commands return

    $pg_config --libdir


    $pg_config --bindir
     
    Reid Thompson, Mar 1, 2010
    #14
  15. Saeed Bhuta

    Saeed Bhuta Guest

    pg_config --libdir
    /usr/lib

    pg_config --bindir
    /usr/lib/postgresql/8.4/bin
     
    Saeed Bhuta, Mar 2, 2010
    #15
  16. what does
    $ ls -lrt /usr/lib/*libpq*

    return
     
    Reid Thompson, Mar 2, 2010
    #16
  17. Saeed Bhuta

    Saeed Bhuta Guest


    ls -lrt /usr/lib/*libpq*
    -rw-r--r-- 1 root root 217474 2009-09-09 17:51 /usr/lib/libpq.a
    -rw-r--r-- 1 root root 151036 2009-09-09 17:51 /usr/lib/libpq.so.5.2
    lrwxrwxrwx 1 root root 12 2009-11-30 12:12 /usr/lib/libpq.so.5 ->
    libpq.so.5.2
    lrwxrwxrwx 1 root root 12 2010-03-02 10:12 /usr/lib/libpq.so ->
    libpq.so.5.2
     
    Saeed Bhuta, Mar 2, 2010
    #17
  18. ok - that all looks right so far.
    per your original email=20
    what does mkmf.log contain?

    on my box this file is located at

    /usr/lib/ruby/gems/1.8/gems/pg-0.8.0/ext/mkmf.log

    That may or may not be where your's is located.
     
    Reid Thompson, Mar 2, 2010
    #18
  19. doh -- your's is likely here
     
    Reid Thompson, Mar 2, 2010
    #19
  20. Saeed Bhuta

    Saeed Bhuta Guest

    find_executable: checking for pg_config... -------------------- yes

    --------------------

    have_header: checking for libpq-fe.h... -------------------- yes

    "gcc -E -I. -I/usr/lib/ruby/1.8/i486-linux -I.
    -I/usr/include/postgresql/include -D_FILE_OFFSET_BITS=64
    -I/usr/include/postgresql -fno-strict-aliasing -g -g -O2 -fPIC
    conftest.c -o conftest.i"
    checked program was:
    /* begin */
    1: #include <libpq-fe.h>
    /* end */

    --------------------

    have_header: checking for libpq/libpq-fs.h... -------------------- yes

    "gcc -E -I. -I/usr/lib/ruby/1.8/i486-linux -I.
    -I/usr/include/postgresql/include -D_FILE_OFFSET_BITS=64
    -I/usr/include/postgresql -fno-strict-aliasing -g -g -O2 -fPIC
    conftest.c -o conftest.i"
    checked program was:
    /* begin */
    1: #include <libpq/libpq-fs.h>
    /* end */

    --------------------

    have_library: checking for PQconnectdb() in
    -l/usr/include/postgresql/... -------------------- no

    "gcc -o conftest -I. -I/usr/lib/ruby/1.8/i486-linux -I.
    -I/usr/include/postgresql/include -D_FILE_OFFSET_BITS=64
    -I/usr/include/postgresql -fno-strict-aliasing -g -g -O2 -fPIC
    conftest.c -L. -L/usr/lib -L/usr/include/postgresql/lib -L.
    -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -L/usr/lib
    -lruby1.8-static -l/usr/include/postgresql/ -lpthread -lrt -ldl -lcrypt
    -lm -lc"
    conftest.c: In function ‘t’:
    conftest.c:3: error: ‘PQconnectdb’ undeclared (first use in this
    function)
    conftest.c:3: error: (Each undeclared identifier is reported only once
    conftest.c:3: error: for each function it appears in.)
    checked program was:
    /* begin */
    1: /*top*/
    2: int main() { return 0; }
    3: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb;
    return 0; }
    /* end */

    "gcc -o conftest -I. -I/usr/lib/ruby/1.8/i486-linux -I.
    -I/usr/include/postgresql/include -D_FILE_OFFSET_BITS=64
    -I/usr/include/postgresql -fno-strict-aliasing -g -g -O2 -fPIC
    conftest.c -L. -L/usr/lib -L/usr/include/postgresql/lib -L.
    -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -L/usr/lib
    -lruby1.8-static -l/usr/include/postgresql/ -lpthread -lrt -ldl -lcrypt
    -lm -lc"
    /usr/bin/ld: cannot find -l/usr/include/postgresql/
    collect2: ld returned 1 exit status
    checked program was:
    /* begin */
    1: /*top*/
    2: int main() { return 0; }
    3: int t() { PQconnectdb(); return 0; }
    /* end */

    --------------------

    have_library: checking for PQconnectdb() in -llibpq...
    -------------------- no

    "gcc -o conftest -I. -I/usr/lib/ruby/1.8/i486-linux -I.
    -I/usr/include/postgresql/include -D_FILE_OFFSET_BITS=64
    -I/usr/include/postgresql -fno-strict-aliasing -g -g -O2 -fPIC
    conftest.c -L. -L/usr/lib -L/usr/include/postgresql/lib -L.
    -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -L/usr/lib
    -lruby1.8-static -llibpq -lpthread -lrt -ldl -lcrypt -lm -lc"
    conftest.c: In function ‘t’:
    conftest.c:3: error: ‘PQconnectdb’ undeclared (first use in this
    function)
    conftest.c:3: error: (Each undeclared identifier is reported only once
    conftest.c:3: error: for each function it appears in.)
    checked program was:
    /* begin */
    1: /*top*/
    2: int main() { return 0; }
     
    Saeed Bhuta, Mar 2, 2010
    #20
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.