3

我已经使用 Brew 安装了 PostgreSQL(之前曾尝试使用 PostgreSQL 网站上的独立安装程序进行安装),但是当我尝试捆绑安装时收到以下错误消息:

Errno::EACCES: Permission denied - /Users/xxxxx/.rvm/gems/ruby-1.9.3-p194/gems/pg-0.14.1/.gemtest An error occurred while installing pg (0.14.1), and Bundler cannot continue. Make sure that `gem install pg -v '0.14.1'` succeeds before bundling.

我在 Stackoverflow 上找到了各种潜在的解决方案,但似乎都没有解决这个问题。

psql --version返回:9.2.1 which psql返回:/usr/local/bin/psql

任何人都认识到这个错误,和/或对如何修复它有任何进一步的想法?

如果做不到这一点,我想我可以在本地坚持使用 SQLite,并在生产环境中使用 PostgreSQL。我假设我需要手动对database.yml文件进行以下更改(我即将首次部署):

production:
  adapter: postgresql
  encoding: unicode
  database: myapp_production
  pool: 5
  username: myapp
  password: 

而且,在我的 gemfile 中,包括以下内容(请注意,运行 bundle install 返回相同的错误,但因为我假设生产服务器上的 PostgreSQL 安装不会有任何错误,我认为它应该仍然有效?) :

group :production do

  gem 'pg'

end

编辑:从头开始,如果 gem 'pg' 包含在 gemfile 中,Webrick 根本不会运行。

编辑 2:另外,当我尝试运行 rvmsudo gem install pg 时,我得到了这个:

ld: in /usr/local/lib/libssl.0.9.8.dylib, missing required architecture x86_64 in file
collect2: ld returned 1 exit status
make: *** [pg_ext.bundle] Error 1

** 编辑 3:** 承认失败。

嗨伙计,

首先,感谢您的所有帮助。

不幸的是,两天后,我将不得不认输。

无论我尝试哪种方法,无论我使用 EnterpriseDB 版本还是 Homebrew 安装版本的 PostgreSQL,我都无法安装 pg gem。我已经尝试了以下所有方法:

install gem pg

sudo install gem pg

rvmsudo install gem pg

sudo env PATH=/library/PostgreSQL/9.2/bin:$PATH gem install pg (when using the EnterpriseDB installer)

rvmsudo env PATH=/library/PostgreSQL/9.2/bin:$PATH gem install pg (ditto)

rvmsudo env PATH=/library/PostgreSQL/9.2/bin:$PATH ARCHFLAGS="-arch x86_54" gem install

我选择上述任何一种方法都会返回以下错误:

ld: in /usr/local/lib/libssl.0.9.8.dylib, missing required architecture x86_64 in file

每当我尝试通过捆绑安装安装 gem 时,都会收到以下错误:

Errno::EACCES: Permission denied - /Users/xxx/.rvm/gems/ruby-1.9.3-p194/gems/pg-0.14.1/.gemtest
An error occurred while installing pg (0.14.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.14.1'` succeeds before bundling.

我不能在这上面花更多的时间,所以我硬着头皮,可能会改用 MySQL。

再次感谢,

格雷姆

最终编辑 - 已修复!请参阅下面的答案以了解我是如何做到的,因为它可能对其他人有所帮助**

4

3 回答 3

6

是的!!!!

对不起,但我想我可能会跳到空中。我我可能已经让它工作了。

万一其他人遇到这个问题,这就是我在 Snow Leopard 上安装 gem 所做的(Lion 的过程可能不同):

1) 确保卸载任何旧版本的 PostgreSQL - EnterpriseDB 和 Homebrew 版本。对于 EnterpriseDB,请参阅此 Stackoverflow 问题/答案,对于 Homebrew,只需执行brew uninstall postgresql --force.

2) 执行brew install postgresqlHomebrew 安装。

3) 现在,问题(正如 Chris Travers 在之前的评论中指出的 - 谢谢 Chris!)似乎是由 OpenSSL 引起的。看来我的版本(我猜是 Snow Leopard 的默认版本,因为直到今天我才听说过)是旧版本,所以我不得不使用 Homebrew 安装更新的版本(我也使用过MacPorts 卸载旧版本 - 不确定在同一台计算机上安装 MacPorts 和 Homebrew 是否合适,但是......):

  1. 麦克波特:sudo port uninstall openssl
  2. 自制:brew install openssl

这应该将 OpenSSL 更新到最新的 64 位版本(我认为?)。

4) 继另一个 Stackoverflow 帖子之后,我执行了以下操作:

sudo gem install pg -- --with-ldflags='-L/usr/local/Cellar/openssl/0.9.8s' 

成功!这似乎奏效了。我仍然需要设置一个新的 Rails 项目来检查所有安装是否正常,但是当我的 Gemfile 中包含 gem 'pg' 时,bundle install 不会导致任何问题,所以手指交叉:-)

希望这对其他人有帮助。

于 2012-10-09T17:13:24.767 回答
1

在我看来,您在安装时缺少有关 OpenSSL(无论是头文件还是其他文件)的内容。我会仔细检查那里的安装。如果不这样做,我建议您考虑禁用此 gem 上的 SSL 支持,但是您这样做。我查看了源代码,它看起来像是针对 libpq 编译的,它可能已经能够链接到 OpenSSL,所以这可能不是问题。

于 2012-10-09T09:37:42.713 回答
0

这对我有用:

1) 从我的控制台安装 postgres gem

brew install postgres
sudo env ARCHFLAGS="-arch x86_64" gem install pg

2)然后在我的 GemFile 中,这样我就可以继续使用 sqlite 进行开发:

group :development, :test do
   gem 'sqlite3'
end
group :production do
  gem 'pg'
end
于 2013-06-23T04:48:37.117 回答