在Mac OSX Snow Leopard上安装PostgreSQL for Rails 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.1which psql返回:/usr/local/bin/psql

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

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

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

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

group :production do
gem 'pg'
end

编辑:请注意,如果gemfile中包含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

每当我试图通过捆绑安装安装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。

再次感谢

格雷姆

最终版本-已修复!关于我是如何做到的,请参阅下面的答案,因为它可能会帮助其他人**

是!!!!

对不起,但我想我可能会跳到空中。我想我可能已经做好了。

如果其他人遇到这个问题,以下是我在Snow Leopard上安装宝石的步骤(Lion的过程可能不同):

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

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

3) 现在,问题(正如Chris Travers在之前的评论中指出的那样——谢谢Chris!)似乎是由于OpenSSL造成的。我的版本(我想这是雪豹的默认版本,因为我直到今天才听说它)似乎是一个旧版本,所以我不得不使用Homebrew安装一个更新的版本(我们也使用MacPorts卸载旧版本-不确定在同一台计算机上安装MacPorts和Homebrew是否合适,但是…):

  1. Macports: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项目来检查所有安装的东西是否正常,但当gem‘pg’包含在我的Gemfile中时,捆绑安装不会引起任何问题,所以祈祷:-)

希望这能帮助其他人。

在我看来,您在安装过程中缺少了一些关于OpenSSL的内容(无论是头文件还是其他文件)。我会仔细检查那里的安装情况。如果做不到这一点,我建议考虑禁用这个gem上的SSL支持,无论你怎么做。我查看了源代码,看起来它是根据libpq编译的,libpq可能已经能够链接到OpenSSL,所以这可能不是问题。

以下是对我有效的方法:

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

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

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

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

最新更新