我正在使用 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 这样做?