ansible-роль: Почему мне нужно установить user.email в etckeeper?

Фактически эта проблема была решена несколько месяцев назад. Он должен быть версии 4.4.3 или новее.

https://fedorahosted.org/freeipa/ticket/5814

1
02.06.2017, 20:25
1 ответ

ОБНОВЛЕНИЕ: должно быть исправлено в следующем выпуске (1.18.8).

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


Несколько раз нажав на это, я почувствовал, что мне нужно посмотреть исходный код.

  1. git обязательно требует «адрес электронной почты» для своих коммитов. Без него он откажется делать коммит.
  2. git будет «автоматически определять» электронную почту, если системное имя хоста может быть преобразовано в полное доменное имя. (У вас должен быть хотя бы один . , чтобы пройти квалификацию :). Или, если /etc/mailnameсуществует, он использует его по умолчанию, не проверяя наличие . с.
  3. etckeeper пытается передать в git адрес электронной почты, составленный из имени пользователя и системного имени хоста. git будет принимать такие явно указанные электронные письма, даже если часть хоста не является полным доменным именем. Если используется sudo, etckeeper использует SUDO_USER из среды. В случае использования suв среде ничего нет, поэтому etckeeper считывает пользователя с владельца tty.

Итак, git commitи etckeeper vcs commitзавершились ошибкой, когда я не установил user.email, И мое имя хоста не разрешалось в полное доменное имя.

etckeeper commitработает в некоторых ситуациях, в которых git commitне работает. Я полагаю, что запутался между этими двумя, когда раньше тестировал (среди прочего).

Если вы запустите etckeeperиз sudo, ошибка не произойдет. Если вы запустите его из su, он не выйдет из строя.Он также не подведет, если вы войдете в систему как root и запустите его; он найдет tty, которым владеет root, и передаст электронное письмо root@HOSTNAME.

etckeeper commitзавершится ошибкой тогда и только тогда, когда

  1. user.emailне установлен в git, И
  2. системное имя хоста не может быть преобразовано в полное доменное имя, И
  3. /etc/mailname не существует (он создан пакетами exim Debian?) И
  4. etckeeper не запускается из sudo И
  5. etckeeper не запускается с tty

Наконец, тестирование показало, что команды, выполняемые под ansible, никогда не запускаются с tty. (Даже при использовании соединения sshи sudoс паролем, где ansible описывается как необходимость использования псевдотерминала).

4
27.01.2020, 23:19

Теги

Похожие вопросы