가능한 역할: 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 커밋에는 "이메일 주소"가 절대적으로 필요합니다. 그렇지 않은 경우 커밋을 거부합니다.
  2. 시스템 호스트 이름이 정규화된 도메인 이름으로 확인될 수 있으면 git은 이메일을 "자동 감지"합니다. (자격을 갖추려면 최소한 하나는 있어야 합니다 ..) 또는 /etc/mailname존재하는 경우 s를 확인하지 않고 s보다 우선적으로 사용합니다 ..
  3. etckeeper는 사용자 이름과 시스템 호스트 이름으로 구성된 이메일 주소를 git에 전달하려고 시도합니다. git은 호스트 부분이 FQDN이 아니더라도 명시적으로 지정된 이메일을 허용합니다. 사용되는 경우 sudoetckeeper는 환경에서 SUDO_USER를 사용합니다. 사용 하면 su환경에 아무것도 없으므로 etckeeper는 해당 사용자의 소유자로부터 사용자를 읽습니다.단말기.

따라서 설정이 없고 호스트 이름이 FQDN으로 확인되지 않으면 git commit실패합니다.etckeeper vcs commituser.email

etckeeper commit어떤 경우에는 작동하지 않습니다 git commit. 이전에 테스트할 때 둘 사이에 혼란이 있었던 것 같습니다.

etckeeper에서 실행 하면 sudo실패하지 않습니다. 에서 실행하면 su실패하지 않습니다. 루트로 로그인하여 실행하면 실패하지 않습니다. 루트 소유의 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를 사용해야 함).

관련 정보