考えられる役割:etckeeperでuser.emailを設定する必要があるのはなぜですか?

考えられる役割:etckeeperでuser.emailを設定する必要があるのはなぜですか?

私は書いた自動化されたインストールのための信頼できる役割etckeeper

user.emailを設定しないと、gitが文句を言うことがわかりました。場合によっては、gitコミットは失敗します。これには、パッケージのインストール時にetckeeperへの自動コミットが含まれ、インストールが失敗する可能性があります。したがって、次のようなタスクを追加する必要があります。他の人はすべてそうです:)

残念ながら、場合によっては正常に動作するようです。そしてetckeeperを手動で使っても問題はないようです。 user.emailで言及されたことがない地図時間

user.emailAnsible ロールを設定する必要がありますか?だとしたら…一部その理由は意図的なものです。役割の説明に入れることができるか、etckeeperまたはgitのパッチを正当化するための説明がありますか?

ベストアンサー1

更新:次のバージョン(1.18.8)で修正する必要があります。

https://etckeeper.branchable.com/todo/requires___96__user.email__96___be_set_under_undocumented_circumstances/


この問題を数回経験した後、ソースコードを調べる必要があると感じました。

  1. Gitコミットには「Eメールアドレス」が絶対に必要です。それ以外の場合はコミットを拒否します。
  2. システムのホスト名が完全修飾ドメイン名で解決できる場合、gitは電子メールを「自動検出」します。 (資格を得るには少なくとも1つは必要です.。)または/etc/mailname存在する場合は、sを確認せずにsより優先して使用してください.
  3. etckeeper は、ユーザー名とシステムのホスト名で構成されるメールアドレスを git に渡そうとします。 gitは、ホスト部分がFQDNでない場合でも、明示的に指定されたEメールを受け入れます。使用する場合、sudoetckeeper は環境で SUDO_USER を使用します。使用するとsu環境には何もないため、etckeeperはそのユーザーの所有者からユーザーを読み取ります。端末

したがって、設定がなく、ホスト名がFQDNとして解決されない場合はgit commit失敗します。etckeeper vcs commituser.email

etckeeper commit場合によっては動作しませんgit commit。以前にテストしたとき、2つの間に混乱があったようです。

etckeeperで実行してもsudo失敗しません。で実行してもsu失敗しません。 rootとしてログインして実行しても失敗しません。ルート所有のttyを見つけて電子メールを転送しますroot@HOSTNAME

etckeeper commit次の場合にのみ失敗します。

  1. user.emailgit、ANDに設定されていません
  2. システムのホスト名をFQDNとして解決できません。
  3. /etc/mailnameが存在しません(Debian eximパッケージで作成されましたか?)。
  4. etckeeperはsudoでは実行されません。
  5. etckeeperはttyでは実行されません。

最後に、テストの結果、ansibleで実行されるコマンドはttyで実行されないことがわかりました。 (ssh接続とパスワードがあっても、sudoansibleは次のように説明されています。擬似ttyを使用する必要があります)。

おすすめ記事