6

私の共有ホストはgitを提供していなかったので、それをビルドして〜/binにインストールしました。実行すると、ほとんどのコマンドで次のエラーが発生しましたが、成功しました。

stdin: is not a tty

次を追加することで、その問題を解決できます。

default_run_options[:pty] = true

deploy.rbに移動しますが、次のエラーが発生し、展開がブロックされます。

sh: git: command not found

どうすれば両方のエラーを解決できますか?

〜/ .ssh / environmentファイルを追加してみました"PATH=$PATH:$HOME/bin"(そしてそれを使用するようにsshd_configを変更しました)が、何もしませんでした。

capistranoが使用しているシェルは、リモートサーバーで〜/ .bashrcまたは〜/.bash_profileを使用していないようです。

リモートマシンでパスを設定する方法について何かアイデアはありますか?

その他の情報:ローカルでOS Xを使用しており、共有サーバーはSite5のLinuxです。

4

7 に答える 7

14

ありがとう、チュー-あなたは私を正しい道に導いてくれました。

使用するだけです:set :scm_command, "~/bin/git"
ローカルのgitがその場所にないため、エラーが発生しました。

ただし、以下は機能し、私の問題を解決するようです。
set :scm_command, "~/bin/git"
set :local_scm_command, "/usr/local/bin/git"

于 2008-11-11T19:20:12.580 に答える
8

問題は、あなたが設定したことです

default_run_options[:pty] = true

これは、.bash_profile または通常のシェル初期化ファイルが実行されないことを意味します。これは、false に設定した場合には当てはまりませんが、パスワードを要求されたときに問題が発生します。

この問題を回避するには、デプロイ ファイルで PATH 環境変数を手動で設定します。

default_environment['PATH'] = "/your/path/to/git:/and/any/other/path/you/need"
于 2010-01-03T04:24:16.237 に答える
3
stdin: is not a tty

これはおそらく、共有ホストに CPanel がインストールされているためです。~/.bashrc ファイルに含まれるグローバルな /etc/.bashrc ファイルで「mesg y」を実行します。したがって、インクルージョンをコメントアウトするだけです。

ソースは次のとおりです。 http://webhostingneeds.com/Git_stdin_is_not_a_tty

于 2010-01-28T22:41:05.220 に答える
3

次のように git へのフル パスを指定できるはずです。

set :scm_command, "/home/your_cap_runner_user/bin/git"

私はこれを自分で試したことはありません-Capistrano自体のgit.rbのソースコードのドキュメントで見つけました。

于 2008-11-11T15:01:47.950 に答える
2

簡単な回避策は、 deploy.rb ファイルで次を設定することです。

set :deploy_via, :copy

これにより、自分のマシンでチェックアウトが行われ、展開サーバーにコピーされます。

于 2008-11-11T01:18:29.843 に答える
1

元のポスターと同じ問題に直面していたので、これは大きな助けになります。

「前」の症状:

  • cap deploy:setup の実行 (成功)
  • cap deploy:check を実行しました (「git コマンドが見つかりません」で失敗します)

set :scm_command, "~/bin/git" を deploy.rb ファイルに追加しました。

  • run cap deploy:setup (成功)
  • cap deploy:check を実行しました (成功)
  • cap deploy:cold を実行しました (次のエラーで失敗します)

    :97:in ``': そのようなファイルやディレクトリはありません - ~/bin/git info git@github.com:quintar/eu reka.git -rHEAD (Errno::ENOENT)

「git」は認識されているように見えますが、私の deploy.rb に含めたリポジトリはバイパスされていますか?

于 2008-12-29T22:30:52.130 に答える
0

~/.ssh/environment ファイルはシェルによって実行されません。ハードコードされた環境ファイルです。このようにパスを設定したい場合は、$PATH に追加する代わりにハードコードする必要があります。他の答えはおそらくより正しいですが、 ~/.ssh/environment を正しく設定することは、他のすべてが失敗した場合の信頼できるフォールバックです。

于 2012-11-01T07:38:07.033 に答える