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.conf3. 주요 명령어 및 사용법
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 nvim4. 실전 팁과 고급 옵션
대상 디렉토리 지정 (-t 또는 --target)
기본적으로 Stow는 부모 디렉토리(..)에 링크를 만들지만, 명시적으로 지정할 수 있습니다.
stow -t ~ nvim시뮬레이션 모드 (-n 또는 --no-folding)
실제로 링크를 만들기 전에 어떤 일이 일어날지 미리 확인합니다. (안전빵!)
stow -nv nvim-n: 실제 실행 안 함 (dry run)-v: 상세 내용 출력 (verbose)
이미 존재하는 파일 처리
만약 ~/.zshrc가 이미 존재한다면 Stow는 충돌을 방지하기 위해 작업을 중단합니다. 이 경우 기존 파일을 백업하거나 삭제한 후 다시 stow를 실행해야 합니다.
5. 전체 워크플로우 요약
mkdir ~/dotfiles생성 및 이동.- 설정할 앱 이름으로 폴더 생성 (예:
mkdir -p nvim/.config). - 기존 설정 파일을 해당 폴더 안으로 이동.
stow nvim실행.ls -al ~로 심볼릭 링크가 잘 생성되었는지 확인.~/dotfiles전체를 Git 저장소에 푸시하여 관리.
이 방식을 사용하면 새 컴퓨터를 세팅할 때 git clone 후 stow * 명령 한 번으로 모든 환경 설정을 복구할 수 있습니다.