Search code examples
ruby-on-railsubuntu-12.04pg

error installing gem pg version 0.12.2 on Ubuntu 12.04


im running on Ubuntu 12.04 and i'm trying to install the pg gem v '0.12.2' on Ruby 1.9.3p194 / Rails 3.2.3. I have installed libpq-dev and build-essential but i still get the same error:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.
fernando@ubuntu:/media/fernando/OS/Rails/oops_booking$ sudo gem install pg -v '0.12.2'
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... yes
checking for PQconnectionUsedPassword()... yes
checking for PQisthreadsafe()... yes
checking for PQprepare()... yes
checking for PQexecParams()... yes
checking for PQescapeString()... yes
checking for PQescapeStringConn()... yes
checking for PQgetCancel()... yes
checking for lo_create()... yes
checking for pg_encoding_to_char()... yes
checking for PQsetClientEncoding()... yes
checking for rb_encdb_alias()... yes
checking for rb_enc_alias()... no
checking for struct pgNotify.extra in libpq-fe.h... yes0
checking for unistd.h... yes
checking for ruby/st.h... yes
creating extconf.h
creating Makefile

make
compiling compat.c
compiling pg.c
pg.c: In function ‘pgconn_wait_for_notify’:
pg.c:2117:3: warning: ‘rb_thread_select’ is deprecated (declared at /usr/include/ruby-1.9.1/ruby/intern.h:379) [-Wdeprecated-declarations]
pg.c: In function ‘pgconn_block’:
pg.c:2592:3: error: format not a string literal and no format arguments [-Werror=format-security]
pg.c:2598:3: warning: ‘rb_thread_select’ is deprecated (declared at /usr/include/ruby-1.9.1/ruby/intern.h:379) [-Wdeprecated-declarations]
pg.c:2607:4: error: format not a string literal and no format arguments [-Werror=format-security]
pg.c: In function ‘pgconn_locreate’:
pg.c:2866:11: warning: variable ‘lo_oid’ set but not used [-Wunused-but-set-variable]
pg.c: In function ‘find_or_create_johab’:
pg.c:3947:3: warning: implicit declaration of function ‘rb_encdb_alias’ [-Wimplicit-function-declaration]
cc1: some warnings being treated as errors
make: *** [pg.o] Error 1

i did install succesfully the newest version of pg gem but i really need to work with the version 0.12.2

thanks in advance


Solution

  • install

    $ sudo apt-get install ruby-dev build-essential
    

    or

    $ sudo apt-get install postgresql-client libpq5 libpq-dev
    $ sudo gem install pg
    

    update

    Here are the steps I followed:

    Install PostgreSQL and development package

    $ sudo apt-get install postgresql-9.1
    $ sudo apt-get install libpq-dev
    

    Set up a user that is the same as my Ubuntu log-in

    $ sudo su postgres -c psql
    postgres=# CREATE ROLE <username> SUPERUSER LOGIN;
    postgres=# \q
    

    Modify Gemfile

    # Remove gem 'sqlite3'
    gem 'pg'
    

    Modify database.yml in app directory

    development:
      adapter: postgresql
      encoding: unicode
      database: appname_development
      pool: 5
      timeout: 5000
      username: <username>
      password:
    
    test:
      adapter: postgresql
      encoding: unicode
      database: appname_test
      pool: 5
      timeout: 5000
      username: <username>
      password:
    

    Run bundle install

    $ bundle install
    

    Create databases and migrations

    $ rake db:create:all
    $ rake db:migrate
    

    Here are the sources I used to help:
    http://mrfrosti.com/2011/11/postgresql-for-ruby-on-rails-on-ubuntu/
    http://railsless.blogspot.in/2012/05/howto-install-postgresql-in-ubuntu11.html