사용자 도구

사이트 도구


linux:stow

GNU stow

실행

  • ~/.dotfiles 안에 vim, bash 등의 디렉토리가 있다고 할때,
  • 기본적으로 현재 디렉토리(stow dir)에서 지정된 이름의 디렉토리에 있는 파일들을 현재 디렉토리 바로 위의 디렉토리(target dir)에 링크한다.
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 를 수행한다.

충돌

  • stow 하려는 파일이 이미 대상 디렉토리에 존재할 경우 충돌이 발생하면서 stow 를 거부한다.
  • –adopt 옵션을 사용하면 대상 디렉토리의 파일을 stow 패키지로 가져와서(adopt) 다시 stow를 한다.
  • 이는 git등으로 버전관리를 할 때만 사용해야한다.
  • 충돌이 나서 버전 관리 대상 stow 패키지로 파일이 옮겨지면 diff 를 해서 충돌을 해결하고 commit/push 해서 최종 사용하면 된다.

주의

  • 예를들어 ~/.dotfiles/local_bin/.local/bin/파일들 구조일 때 ~/.local/bin 디렉토리가 존재하지 않으면 ~/.dotfiles/local_bin/.local/bin 디렉토리 자체를 링크해버린다.
  • 하지만 이미 디렉토리가 존재하면 ~/.dotfiles/local_bin/.local/bin아래에 있는 파일들만 링크한다.
  • 목적에 맞게 미리 디렉토리를 생성해주거나 해야한다.

참조

linux/stow.txt · 마지막으로 수정됨: 2020/09/14 00:16 저자 kwon37xi