/etc
버전 관리 및 다양한 유니 세스에 적용 할 턴키 솔루션에는 어떤 것이 있습니까? 턴키가 반드시 기본 설치의 일부를 의미하지는 않지만 다음 기능은 훌륭합니다.
- 메타 데이터 (소유권, 권한)를 관리하기 위해 VCS 명령에 연결합니다.
- 패키지 관리자와 통합 (설치 전후에 자동 실행, 업그레이드를 지능적으로 처리)
- 업스트림 파일 버전을 브랜치로 취급합니다.
- 미리 채워진 무시 목록;
- 여러 기본 VCS (특히 분산 된 VCS)를 지원합니다.
데비안과 파생물에서 etckeeper 를 사용 합니다. 업스트림 버전을 추적하지 않는다는 점을 제외하고 위의 모든 기능이 있습니다. 대안, 특히 * BSD에 대해 배우고 싶습니다.
답변
젠투에서 / etc (Dispatch-conf)에 대한 패키지 유발 변경을 관리하는 도구는 변경을 추적하기 위해 rc를 지원하지만 실제로는 강력하지 않습니다.
나는 / etc를 통해 버전을 변경하는 경향이 있습니다 git
. 특히 다른 브랜치를 사용하면 가능한 한 많은 장소에 가능한 많은 물건을 유지하면서 가능한 한 다른 배포판에서 / etc를 가능한 한 비슷하게 유지할 수 있습니다 (아마도 실패한 일부 영역의 경우 아파치 구성 예를 들어 배포판마다 실제로 다릅니다.) 다음과 같이 작동합니다.
나는이 master
내 기본 설정 파일의 repo. 이제 배포판 master
이름 (이 예에서는 데비안)을 기반으로 지점을 기반으로 새 지점을 만들도록 새 배포판을 사용합니다 . 데비안은 구성 파일을 내 위치와 다른 위치에 유지 master
하므로 git mv file new_loc
. 그리고 모든 것이 좋습니다. master
특정 구성 지시문을 추가했기 때문에 파일 로 전환 하고 변경합니다. 브랜치 master
로 병합 debian
하면 이동 된 파일이 변경되므로 기본적으로 master
브랜치 내 대부분의 항목 만 변경하고 내 “배포”의 변경 내용을 병합하면됩니다. 브랜치 (보통 배포와 목적 브랜치가 혼합 된 경향이있는 데비안 서버는 데비안 워크 스테이션과 약간의 차이가 있지만 기능은 여전히 작동합니다).
그래서 기본적으로 나는 “일반적인 구성”을 가지고 master
있으며 (개체 지향 프로그래밍 용어로 말하면) 그것들을 내 분기로 상속합니다 (서로 상속받을 수도 있습니다).
그 외에도 git
“체리 픽”커밋 (이 경우 / etc /로 변경)에 대한 메커니즘은 특정 구성의 일부만 필요한 경우에 매우 유용했습니다.
이제 당신의 아이디어 중 일부에 :
- 더 많은 패키지 관리자 통합이 필요한 경우 래퍼 스크립트를 사용합니다 (현재는 아닙니다).
- 업스트림 버전을 브랜치로 처리하면와 잘 작동
git
하지만 때로는 부분적으로 병합하는 또 다른 브랜치입니다.master
- git의 무시 목록은 해당 리포지토리에있는 .gitignore 파일입니다.
답변
나는 fossil
이것을 위해 약간의 성공을 거두었 다. 자세한 내용 은 화석에 대한 내 게시물을 참조하십시오 . 또한 etcupdate
변경 사항 추적보다 업그레이드 간 이동에 더 유용한 도구를 사용했습니다 . 나는 그것이 freebsd-update
한 시점에서 동반자 도구로 의도되었다고 생각합니다 . 현재 상태를 잘 모르겠지만 RELEASE-8.*
시스템에서 작동 합니다.
http://lists.freebsd.org/pipermail/freebsd-current/2010-June/017927.html
http://people.freebsd.org/~jhb/etcupdate/
답변
etckeeper 라는 도구가 있는데 그것이 얼마나 좋은지 모르겠습니다 .
etckeeper는 / etc를 git, mercurial, darcs 또는 bzr 저장소에 저장하기위한 도구 모음입니다. 패키지 업그레이드 중에 / etc에 대한 변경 사항을 자동으로 커밋하기 위해 apt (및 yum 및 pacman-g2를 포함한 다른 패키지 관리자)에 연결됩니다. 개정 제어 시스템이 일반적으로 지원하지 않지만 / etc / shadow의 권한과 같이 / etc에 중요한 파일 메타 데이터를 추적합니다. 모듈 식이며 구성이 가능하며 개정 제어 작업의 기본 사항을 이해하면 사용하기도 쉽습니다.
또한 * BSD에서 작동하도록 할 수 있는지 모르겠지만 가능한 포트라고 생각하지만 포트에서 지원되지는 않습니다.