在Mac OSX Snow Leopard上安装PostgreSQL for Rails 3 - 错误消息

时间:2012-10-08 20:32:13

标签: ruby-on-rails macos postgresql homebrew

我使用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',那么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

每当我尝试通过bundle install安装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代替。

再次感谢,

格雷姆

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

3 个答案:

答案 0 :(得分:6)

YES !!!!

抱歉,但我想我可能会跳到空中。我认为我可能已经开始工作了。

如果有其他人遇到这个问题,这就是我在Snow Leopard上安装宝石所做的事情(Lion的流程可能有所不同):

1)确保卸载任何旧版本的PostgreSQL - EnterpriseDB和amp;自制版本。对于EnterpriseDB,请参阅this Stackoverflow question/answer,对于Homebrew,只需执行brew uninstall postgresql --force

2)执行brew install postgresql以获取Homebrew安装。

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

  1. Macports:sudo port uninstall openssl
  2. Homebrew:brew install openssl
  3. 这应该将OpenSSL更新到最新的64位版本(我想?)。

    4)继another Stackoverflow post之后,我做了以下事情:

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

    成功! 似乎可以工作。我仍然要设置一个新的Rails项目来检查所有安装好的,但是当我的Gemfile中包含gem'pg'时,bundle install没有问题,所以手指交叉: - )

    希望这有助于其他人。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

这对我有用:

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

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

2)然后在我的GemFile中继续使用sqlite for dev:

group :development, :test do
   gem 'sqlite3'
end
group :production do
  gem 'pg'
end