Jace Docs

Stow

Stow is a simple symlink farm manager.

GNU Stow는 여러 소프트웨어 패키지의 설정 파일(dotfiles)을 효율적으로 관리할 수 있게 도와주는 심볼릭 링크(Symbolic Link) 관리자입니다. 단순히 파일을 복사하는 것이 아니라, 특정 폴더에 모아둔 설정 파일들을 시스템의 원래 위치(예: ~/.config)로 연결해주는 역할을 합니다.


1. 기본 개념: 왜 Stow를 쓰는가?

일반적으로 설정 파일들은 시스템 여기저기(~/.zshrc, ~/.config/nvim/, ~/.ssh/config) 흩어져 있습니다. Stow를 사용하면 이 파일들을 ~/dotfiles라는 하나의 폴더에 모아두고, 마치 제자리에 있는 것처럼 시스템에 인식시킬 수 있습니다. 이렇게 하면 Git으로 설정 파일을 관리하기가 매우 수월해집니다.


2. 폴더 구조 설계 (가장 중요)

Stow의 핵심은 **"Stow 폴더 내부의 구조가 대상 폴더(일반적으로 홈 디렉토리)의 구조와 일치해야 한다"**는 것입니다.

추천 구조 예시:

~/dotfiles/
├── nvim/                   # 패키지 이름
│   └── .config/            # 홈 디렉토리에서의 상대 경로
│       └── nvim/
│           └── init.lua
├── zsh/                    # 패키지 이름
│   └── .zshrc              # 홈 디렉토리 바로 아래 위치
└── tmux/
    └── .tmux.conf

3. 주요 명령어 및 사용법

Stow는 기본적으로 실행하는 위치의 하위 디렉토리를 하나의 "패키지"로 인식하여 부모 디렉토리에 링크를 생성합니다.

설치

# macOS
brew install stow

# Ubuntu/Debian
sudo apt install stow

# Arch Linux
sudo pacman -S stow

심볼릭 링크 생성 (Stowing)

~/dotfiles 디렉토리로 이동한 후, 관리할 패키지 이름을 지정합니다.

cd ~/dotfiles
stow nvim
  • 결과: ~/dotfiles/nvim/.config/nvim 파일이 ~/.config/nvim 위치에 심볼릭 링크로 연결됩니다.

심볼릭 링크 제거 (Unstowing)

설정을 더 이상 연결하고 싶지 않을 때 사용합니다.

stow -D nvim

변경 사항 재적용 (Restowing)

파일 구조가 바뀌었거나 링크를 새로고침해야 할 때 사용합니다. (-D 후 다시 stow 하는 것과 같습니다.)

stow -R nvim

4. 실전 팁과 고급 옵션

대상 디렉토리 지정 (-t 또는 --target)

기본적으로 Stow는 부모 디렉토리(..)에 링크를 만들지만, 명시적으로 지정할 수 있습니다.

stow -t ~ nvim

시뮬레이션 모드 (-n 또는 --no-folding)

실제로 링크를 만들기 전에 어떤 일이 일어날지 미리 확인합니다. (안전빵!)

stow -nv nvim
  • -n: 실제 실행 안 함 (dry run)
  • -v: 상세 내용 출력 (verbose)

이미 존재하는 파일 처리

만약 ~/.zshrc가 이미 존재한다면 Stow는 충돌을 방지하기 위해 작업을 중단합니다. 이 경우 기존 파일을 백업하거나 삭제한 후 다시 stow를 실행해야 합니다.


5. 전체 워크플로우 요약

  1. mkdir ~/dotfiles 생성 및 이동.
  2. 설정할 앱 이름으로 폴더 생성 (예: mkdir -p nvim/.config).
  3. 기존 설정 파일을 해당 폴더 안으로 이동.
  4. stow nvim 실행.
  5. ls -al ~로 심볼릭 링크가 잘 생성되었는지 확인.
  6. ~/dotfiles 전체를 Git 저장소에 푸시하여 관리.

이 방식을 사용하면 새 컴퓨터를 세팅할 때 git clonestow * 명령 한 번으로 모든 환경 설정을 복구할 수 있습니다.

On this page