4

私はUbuntu12.04で実行していて、Ruby 1.9.3p194 /Rails3.2.3にpggemv'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

私はpggemの最新バージョンを正常にインストールしましたが、バージョン0.12.2で作業する必要があります

前もって感謝します

4

3 に答える 3

6

インストール

$ 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

于 2012-10-29T11:25:12.133 に答える
2
# 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のコードは調べていません。

于 2013-01-23T15:54:31.387 に答える
-3

エラーメッセージを見てください:

エラー:gemの実行中...(Gem :: FilePermissionError)/var/lib/gems/1.9.1ディレクトリへの書き込み権限がありません。

sudoでコンマを実行してもよろしいですか?これは書き込み許可エラーです。

于 2012-10-29T16:52:22.000 に答える