Capistrano (on JRuby) で sudo するには?
で Capistrano (v2.9.0) を試したところ、 sudo を実行しようとすると、はじかれてしまった。
sudo: no tty present and no askpass program specified
とのこと。
対策(その1)
Capfile に以下を追加すれば、はじかれなくなった。
default_run_options[:pty] = true
対策(その2)
サーバ側で sudo の設定を変更する方法もある。
$sudo visudo Defaults visiblepw
ただし、デフォルトで off なものを on に変更することに、どんなリスクが伴うかを認識しておく必要があるだろう。
参考:
http://linuxjm.sourceforge.jp/html/sudo/man5/sudoers.5.html
デフォルトでは、ユーザがパスワードを入力しなければならないときに、使用しているターミナルでエコーの抑制ができなかったら、 sudo は実行を拒否するようになっている。これに対し、 visiblepw フラグが設定されていると、パスワードがスクリーンに表示されてしまう場合でも、sudo はプロンプトを出して、パスワードを求める。