여러 컴퓨터에서 UNIX 사용자 설정 관리

여러 컴퓨터에서 UNIX 사용자 설정 관리

비슷한 "프로필"을 가진 다양한 Linux 시스템이 있습니다. 내 설정을 동기화 상태로 유지하고 싶습니다. 예를 들어 vimrc,, zshrc. 내가 가진 문제는 서로 다른 설정과 소프트웨어 버전을 가진 서로 다른 Linux 배포판이라는 것입니다. 예를 들어 일부는 윈도우 시스템과 함께 제공되고 일부는 Zsh가 있고 일부는 Zsh가 있고 일부는 그렇지 않으며 일부는 다른 버전이 있습니다. Dropbox나 Github 등을 통해 설정을 설정할 수 있다는 것을 깨달았습니다. 하지만 환경이 더욱 복잡해지면 이는 더욱 어려워집니다(Github에 이미 나와 있습니다). 또한 각 컴퓨터를 동기화 상태로 유지하는 것이 어렵다는 것을 알았습니다. 이들은 대부분 다른 인터넷 연결(및 일부 집과 사무실과 같은 다른 네트워크)을 사용하는 클라이언트 시스템이므로 시스템에 대한 "푸시"가 동기화 상태를 유지하지 않습니다. zshrc이전 버전과 호환되지는 않지만 템플릿과 동기화되지 않도록 이와 같은 힌트를 주는 것이 좋을 것입니다.

이 문제를 해결하는 데 도움이 될 수 있는 기존 솔루션이 있습니까?

답변1

내가 무엇을 하는지 말해 줄 수 있어요. 이것은 어떤 프로그램에 대한 구성 파일이 있는지, 시스템마다 얼마나 다른지, 이식 가능한 구성 파일을 작성하는 것과 각 릴리스 간 유지 관리를 반복하는 데 얼마나 투자할 의향이 있는지에 따라 최선의 선택이 될 수도 있고 아닐 수도 있습니다. 사이트당 많은 노력이나 문서가 필요합니다.

내 모든 구성 파일은 버전 제어 대상입니다. 나는 작업에 완벽하게 적합한 CVS를 사용하지만 지금 시작하는 경우(Linus가 버전 제어를 믿지 않는 경우와는 반대로) 다른 버전 제어 시스템을 사용할 수 있습니다. 체크아웃이 여러 번 있든 없든 버전 관리는 항상 좋습니다. 사이트 간 변경 사항을 동기화하기 위해 커밋하고 업데이트합니다.

나는 휴대용 문서를 작성하려고 노력합니다. 예를 들어 내 것은 .zshrc2.5 이후의 모든 버전과 호환되어야 합니다(그러나 이것은 약간의 확장입니다. 최근에 테스트하지 않았으며 마지막으로 zsh 2.5 시스템에 로드했을 때 정말 느렸습니다). 이는 나에게 and (피할 수 없을 때) if type someprogram >/dev/null 2>/dev/null같은 것이 많다는 것을 의미합니다 . case $ZSH_VERSION구성 파일이 해석된 언어(bash, Emacs, Vim, Fvwm, Sawfish 등)인 다른 프로그램의 경우에도 마찬가지입니다. 이러한 파일의 별도 버전을 유지하고 싶지 않으므로 각 버전 관련 정의는 조건문 아래에 있습니다. 번거로움을 줄이고 싶다면(더 적은 수의 조합을 지원하는 비용으로) 이렇게 할 수 있습니다.

case $ZSH_VERSION in
  [5-9]*|4.[2-9].*) . ~/.zshrc-42;;
  4.[01].*) . ~/.zshrc-40;;
  3.1.[6789]) . ~/.zshrc-31;;
  *) . ~/.zshrc-2;;
esac

ls그러나 다른 시스템 종속성이 있습니다(예: gnuls --color -b또는 ls --color -b또는 colorls -G또는 또는... 버전의 별칭을 지정하는지 알 수 있음 ls -Fb). 모든 것을 별도의 파일로 분리하는 것은 금방 지루해질 수 있습니다.

나는 마스터 파일에 의해 로드되는 각 사이트의 설정을 포함하는 사이트별 디렉터리를 유지합니다. 예를 들어 내 .zshrc포함 줄은

if [ -r ~/Here/lib/shell/local.zshrc ]; then
  . ~/Here/lib/shell/local.zshrc
fi

Here사이트별 구성 파일이 포함된 디렉터리에 대한 심볼릭 링크입니다. 맞춤 설정되지 않은 내 웹사이트에는 존재하지 않습니다. 로컬에는 .zshrc일반적으로 별칭, 디렉터리 별칭 등이 포함됩니다. 대부분의 사이트에는 .profile일부 환경 변수를 정의하는 로컬 변수가 있습니다 . 모든 사이트별 구성은 동일한 버전 제어 시스템에 있습니다(모두 확인하는 데 몇 kB만 더 소요됩니다).

일부 파일은 makefile에 의해 자동으로 생성됩니다. 예를 들어 ~/.ssh/config, 일반 호스트 목록(어디서나 액세스할 수 있는 컴퓨터에 대한 별칭 및 옵션)과 사이트별 호스트 목록(네트워크 내에서만 액세스할 수 있는 컴퓨터)에서 생성하는 스크립트가 있습니다 .

답변2

일반적으로 UNIX 세계에서는 여러 호스트(동일한 환경에 있음) 간에 이러한 동기화를 유지하려는 경우 auto_home(자동 마운트)를 사용하여 호스트 간에 홈 디렉토리를 마운트합니다.

따라서 모든 호스트가 동일한 네트워크에 있는 경우 이 방법이 도움이 될 수 있습니다.

그렇지 않은 경우에는 마스터 서버를 설정하고 homedir 파일(.bash_profile, .vimrc 등)을 대상 호스트에 주기적으로 동기화할 수 있습니다.

관련 정보