2012-10-08 148 views
3

我已经安装了PostgreSQL,使用了Brew(以前尝试使用PostgreSQL网站上的独立安装程序进行安装),但是当我尝试时收到以下错误消息捆绑安装:在Mac OSX上安装PostgreSQL for Rails 3 Snow Leopard - 错误信息

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,包括以下内容(请注意,运行捆绑安装返回相同的错误,而是因为我假设不会有与生产服务器上的PostgreSQL安装任何错误,我认为它应该仍然工作):

​​

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

编辑2:此外,当我尝试运行rvmsudo宝石安装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 

每当我试着通过安装捆绑宝石安装,我得到的以下错误:

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来代替。

再次感谢,

格雷姆

最后编辑 - 修正了!看到我的答案如下,因为它可以帮助其他人**

+0

“以前试图使用PostgreSQL网站上的独立安装程序进行安装”。那发生了什么?为什么“试图”?你卸载了吗?你遇到什么问题? –

+0

嗨,我使用brew卸载postgresql --force安装“Brew”版本之前卸载旧版本。但是,我没有重新启动,这可能导致了一些“剩菜” - 因此,在重新启动后,我将尝试卸载最新版本并重试。 – Graeme

+0

和官方Pg安装程序出了什么问题? –

回答

1

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

+0

我不确定我的系统中是否安装了OpenSSL,或者即使默认情况下已经安装了OpenSSL(我非常喜欢noob)。鉴于大多数其他宝石安装正确,这可能不是原因,但值得研究。 – Graeme

+1

它在我看来像一个链接问题,没有找到64位版本的openssl的库文件。这也可能是一个路径问题。您可能会搜索openssl,看看您是否可以确定是否在正确的位置安装了所有正确的版本。 –

+0

我通过MacPorts在darwin64-x86_64-cc上更新了OpenSSL到1.0.01c。但仍然没有运气。将看看它是否是一个路径问题,否则我认为我被击败了,并且可能是一个博克Mac的拥有者... – Graeme

6

是的!

对不起,但我想我可能会跳入空中。我认为我可能已经得到它的工作。

万一别人运行到这个问题,在这里我就是这样做来获得宝石上安装雪豹(该过程可能是狮子不同):

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

2)做一个brew install postgresql得到自制安装。

3)现在,问题(正如克里斯特劳斯在前面的评论中指出的 - 感谢克里斯!)似乎是由于OpenSSL。这似乎是我的版本(我猜是雪豹的默认版本,因为我从来没有听说过它直到今天)是一个旧版本,所以我不得不使用自制软件来安装更新版本(我也使用过MacPorts的卸载旧版本 - 不知道这是安装在同一台计算机上有适当的MacPorts和自制软件,但...):

  1. 的MacPorts:sudo port uninstall openssl
  2. 家酿:brew install openssl

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

4)another Stackoverflow post继,我做了以下内容:

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

成功!那似乎工作。我仍然需要设置一个新的Rails项目来检查安装的所有内容,但是当gem'pg'包含在我的Gemfile中时,捆绑安装不会引起任何问题,所以手指交叉:-)

希望这可以帮助其他人。

+0

太棒了。你应该有数百个upvotes为此。我很确定任何有Mac的人试图使用heroku都会遇到这个问题。 –

0

下面是我工作:

1)从我的控制台

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

2)然后在我的Gemfile之后安装Postgres的宝石,所以我可以继续使用SQLite的开发:

group :development, :test do 
    gem 'sqlite3' 
end 
group :production do 
    gem 'pg' 
end 
相关问题