1

bitnami ruby​​ スタック アプライアンスを使用しており、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 端末から行っていることと、カピストラーノが行っていること (おそらく同じ ssh 接続から) の違いは何ですか?

bitnami コンソールと同じ PATH を使用するように、.bashrc の PATH を編集しました。

capistrano を使用して bitnami Ruby スタック アプライアンス (ubuntu 12.04 だと思います) にデプロイしたことのある人はいますか?

アップデート - -

cap deploy -d を試して、リリースディレクトリになる直前にデプロイを中止しました。次に、sshターミナルを使用してリリースディレクトリに移動し、「sudo bundle install」を発行しましたが、上記のエラーも発生しました。したがって、カピストラーノと手動の ssh の違いではないかもしれませんが、「sudo gem install 'pg'」が機能するため、リリース ディレクトリにある必要があります。これは、どのディレクトリにいるかは関係ありません。

また、gem をインストールできるということは、必要なライブラリなどがマシンのどこかにインストールされていることを意味しますが、バンドラーはそれらにアクセスするのに問題があるようです。

だから、これはキャピストラーノの問題ではなくバンドラーの問題だと思いますか?

確認しました。カピストラーノをバイパスしていますが、バンドラーに問題があります。

では、なぜ gem install pg -v '0.16.0' は機能するのに bundle install は機能しないのでしょうか?

もっと - -

したがって、 bundle install --system は機能します。次に、bundle install --local を実行します。しかし、 bundle install --local --deployment は失敗し、「どのソースにも pg-0.16.0 が見つかりませんでした」。それが何を意味するのかわかりません。システム上にあり、「gem list」に表示されます。

カピストラーノにこれを強制する方法があるのだろうか?

4

0 に答える 0