사용자 도구

사이트 도구


linux:stow

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linux:stow [2020/09/11 07:34]
kwon37xi
linux:stow [2020/09/14 00:16] (현재)
kwon37xi [실행]
줄 1: 줄 1:
 ====== GNU stow ====== ====== GNU stow ======
   * https://www.gnu.org/software/stow/   * https://www.gnu.org/software/stow/
 +  * [[https://www.gnu.org/software/stow/manual/stow.html|Stow]]
 +  * ''stow'' 의 원래 목적은 다중 버전의 애플리케이션을 버전을 선택해가면서 사용하고자 하는 것이다.
 +
 +===== 실행 =====
 +  * ''~/.dotfiles'' 안에 ''vim'', ''bash'' 등의 디렉토리가 있다고 할때,
 +  * 기본적으로 **현재 디렉토리(stow dir)**에서 지정된 이름의 디렉토리에 있는 파일들을 현재** 디렉토리 바로 위의 디렉토리(target dir)**에 링크한다.
 +<code sh>
 +cd ~/.dotfiles
 +
 +# vim 안의 각종 파일을 ~/ 를 기준으로 link 해준다.
 +stow vim
 +
 +ls ~
 +.vimrc -> ~/.dotfiles/vim/.vimrc
 +
 +# 아무 디렉토리에서나 명시적으로 stow dir과 target dir 을 명시하려면
 +stow -d ~/.dotfiles -t ~/ vim
 +
 +stow -d ~/.dotfiles -t ~/ -S vim # 명시적으로 stow 하라는 옵션. 생략과 동일
 +
 +# unstow : 링크 제거
 +stow -d ~/.dotfiles -t ~/ -D vim
 +
 +# -R restow : unstow -> stow 를 수행한다.
 +</code>
 +
 +===== 충돌 =====
 +  * stow 하려는 파일이 이미 대상 디렉토리에 존재할 경우 충돌이 발생하면서 stow 를 거부한다.
 +  * ''--adopt'' 옵션을 사용하면 대상 디렉토리의 파일을 stow 패키지로 가져와서(adopt) 다시 stow를 한다.
 +  * 이는 [[:git|git]]등으로 버전관리를 할 때만 사용해야한다.
 +  * 충돌이 나서 버전 관리 대상 stow 패키지로 파일이 옮겨지면 diff 를 해서 충돌을 해결하고 commit/push 해서 최종 사용하면 된다.
 +
 +===== 주의 =====
 +  * 예를들어 ''~/.dotfiles/local_bin/.local/bin/파일들'' 구조일 때 ''~/.local/bin'' 디렉토리가 존재하지 않으면 ''~/.dotfiles/local_bin/.local/bin'' 디렉토리 자체를 링크해버린다.
 +  * 하지만 이미 디렉토리가 존재하면 ''~/.dotfiles/local_bin/.local/bin''아래에 있는 파일들만 링크한다.
 +  * 목적에 맞게 미리 디렉토리를 생성해주거나 해야한다.
  
 ===== 참조 ===== ===== 참조 =====
   * [[https://alexpearce.me/2016/02/managing-dotfiles-with-stow/|Managing dotfiles with GNU stow - Alex Pearce]]   * [[https://alexpearce.me/2016/02/managing-dotfiles-with-stow/|Managing dotfiles with GNU stow - Alex Pearce]]
linux/stow.1599777261.txt.gz · 마지막으로 수정됨: 2020/09/11 07:34 저자 kwon37xi