我已经使用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中,包含以下内容(注意,运行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版本还是安装在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。
再次感谢,
格雷姆
最终编辑-修正!请看下面我的回答,看我是如何做到的,因为它可能会帮助其他人**
最佳答案
在我看来,您的安装中缺少有关OpenSSL的内容(无论是头文件还是其他)。我会再检查一下那里的设备。如果失败,我建议在这个gem上禁用SSL支持。我查看了源代码,看起来它是根据libpq编译的,libpq可能已经能够链接到OpenSSL了,所以这可能不是问题。