1

我正在使用 bitnami ruby​​ stack 设备,并尝试设置 capistrano 以将我的应用程序从我的 MS windows 笔记本电脑部署到设备。在捆绑安装部分,当无法构建本机扩展时,部署会失败。到目前为止,这发生在 nokogiri 和 pg gem 上。

例如:

* ←[33mexecuting "cd /opt/bitnami/projects/melvin/releases/20130826221225 && bundle
install --gemfile /opt/bitnami/projects/melvin/releases/20130826221225/Gemfile --path
/opt/bitnami/projects/melvin/shared/bundle --deployment --quiet --without development 
test"←[0m

产生:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/opt/bitnami/ruby/bin/ruby extconf.rb --with-pg-config=/usr/pgsql-9.2/bin/pg_config
Using config values from /usr/pgsql-9.2/bin/pg_config
sh: 1: /usr/pgsql-9.2/bin/pg_config: not found
sh: 1: /usr/pgsql-9.2/bin/pg_config: not found
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

但是如果我打开一个终端并 ssh 并发出 gem install pg -v '0.16.0' 它工作正常。

那么我在 ssh 终端上所做的事情和 capistrano 在做的事情有什么不同(可能来自同一个 ssh 连接)?

我在 .bashrc 中编辑了 PATH 以使用与 bitnami 控制台中相同的 PATH。

有人曾经使用 capistrano 部署到 bitnami ruby​​ stack 设备(我认为是 ubuntu 12.04)吗?

更新 - -

我刚刚尝试了 cap deploy -d 并在它成为发布目录之前中止了部署。然后我使用我的 ssh 终端并转到发布目录并发出“sudo bundle install”,这也给出了上述错误。所以也许 capistrano 和手动 ssh 之间没有区别,但它必须在发布目录中,因为“sudo gem install 'pg'”有效,这与我在哪个目录无关。

此外,因为我可以安装 gem 意味着必要的库等安装在我的机器上的某个地方 - 但捆绑器似乎无法访问它们。

所以我认为这是一个捆绑器问题而不是 capistrano 问题,也许?

确认,我正在绕过 capistrano,这是 bundler 的问题。

那么为什么 gem install pg -v '0.16.0' 可以工作但 bundle install 不行呢?

更多的 - -

因此, bundle install --system 有效。然后我可以做一个捆绑安装--local。但是 bundle install --local --deployment 失败,“在任何源中都找不到 pg-0.16.0”。我不明白这意味着什么,它在系统上并显示在“宝石列表”中。

我想知道是否有办法迫使 capistrano 这样做?

4

0 回答 0