繁体   English   中英

在Ubuntu 12.04上安装gem pg版本0.12.2时出错

[英]error installing gem pg version 0.12.2 on Ubuntu 12.04

即时通讯在Ubuntu 12.04上运行,我正在尝试在Ruby 1.9.3p194 / Rails 3.2.3上安装pg gem v'0.12.2'。 我已经安装了libpq-dev和build-essential但我仍然得到同样的错误:

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

我确实成功安装了最新版本的pg gem,但我真的需要使用版本0.12.2

提前致谢

安装

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

要么

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

更新

以下是我遵循的步骤:

安装PostgreSQL和开发包

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

设置与我的Ubuntu登录相同的用户

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

修改Gemfile

# Remove gem 'sqlite3'
gem 'pg'

修改app目录中的database.yml

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:

运行捆绑安装

$ bundle install

创建数据库和迁移

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

以下是我过去帮助的来源:
http://mrfrosti.com/2011/11/postgresql-for-ruby-on-rails-on-ubuntu/
http://railsless.blogspot.in/2012/05/howto-install-postgresql-in-ubuntu11.html

# add a --with-cflags option
gem install --with-cflags="-O2 -pipe -march=native -w"

要么

# change your user-level bundle config options for pg and run
# bundle install within the project
bundle config build.pg --with-cflags="-O2 -pipe -march=native -w"
cd ${project_dir}
bundle install

请记住,这将修改${HOME}/.bundle/config ,因此对于每个使用该项目的用户,他们都需要在他们正在处理的每台机器上运行该命令。

此CFLAGS选项将覆盖当前系统范围的值,包括-Werror=format-security 我相信真正的解决方法是修复pg gem,以便设置这个标志是无关紧要的,但我还没有看过pg的代码。

看看错误信息:

错误:执行gem时...(Gem :: FilePermissionError)您没有对/var/lib/gems/1.9.1目录的写权限。

你确定你用sudo运行你的comman吗? 这是写入perrmission错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM