닷파일 리팩토링
닷파일을 정리하자
최근 NeoVim
사용을 자주 하게 되면서, 환경 세팅의 표준화가 필요하다는 생각이 들었습니다.
이미 만들어둔 닷파일이 있었지만, 예전에 만들어둔 것이라 그렇게 깔끔하지 않았습니다. 그래서 이번 기회에 닷파일을 리팩토링하기로 결심했습니다.
리팩토링 계획
이번 리팩토링은 다음과 같은 큰 두 가지의 목표를 가지고 진행했습니다.
NeoVim
외에Vim
설정 포함 (주로sudo
를 통해 사용하기 위한 설정)- 자동 설치 스크립트 작성
nvim
디렉토리는 이미 닷파일로 관리하고 있었기 때문에, vim
디렉토리를 추가로 만들고, 스크립트를 새로 작성했습니다. 추가로, README 파일도 더 상세히 작성했습니다.
최종 결과
리팩토링 된 닷파일은 https://github.com/seokgukim/dotfiles에서 확인할 수 있습니다.
다음으로는 이번에 겪은 시행착오와 해결 방법들입니다.
시행착오
시행착오의 대부분은 설치 스크립트에서 나왔습니다.
대부분의 NeoVim
설정은 완성되어 있었고, Vim
역시 그냥 .vimrc
파일 정도만 들어갔기 때문에 복잡할 건 없다고 생각했습니다.
하지만 설치 스크립트 작성 과정에서 여러 문제에 봉착했습니다.
1. 설치 환경의 고려
범용적인 설치 스크립트를 작성하는 것이 목적이었기 때문에, 다양한 환경을 고려해야 했습니다.
그래서 각 운영체제에 맞는 패키지 매니저에 대한 고려를 추가하면 될 것이라고 생각했는데, 그것만이 아니었습니다.
Node.js
와 NeoVim
의 최신 LTS 버전을 설치하기 위해, 공식 사이트로부터 파일을 다운로드하고 설치하는 방식을 택했는데, 이 경우 아키텍처와 버전에 따라 설치 방법이 달라질 수 있었습니다.
예를 들어, arm64
버전의 경로가 달라진다던지, 버전마다 설치 경로가 달라진다던지 하는 사소하지만 귀찮은 문제들이 말입니다.
ARCH
환경 변수를 추가하여 아키텍처를 감지하고, 이에 따라 다운로드 소스와 설치 경로를 다르게 설정하는 방식으로 해결했지만, 아무래도 버전 같은 경우엔 그냥 현재 최신 버전만 적어넣었습니다.
언젠가 이 부분도 자동화할 수 있으면 좋겠습니다.
2. 패키지 설치하기
패키지를 설치하는 과정에서도 크고 작은 문제들이 있었습니다.
일단 메인 에디터인 NeoVim
에서 사용하기 위한 각종 패키지들은 apt
npm
pip
gem
각각 다르게 설치해야 했습니다.
패키지 매니저를 여럿 지원하기 위해, 각 패키지 매니저에 맞는 설치 명령어를 작성해야 했습니다. 이 과정에서 각 패키지 매니저의 설치 방식과 옵션을 파악하는 데 시간이 걸렸습니다.
특히 pip
의 경우의 Debian
Ubuntu
등의 배포판에선 시스템 패키지를 디폴트로 건드리지 못하도록 설정되어 있어, 그런 경우를 감지해 추가적으로 --break-system-packages
옵션을 붙여줘야 했습니다.
어쨌든 이런 문제들을 뛰어넘어 설치 스크립트를 도커 환경에서 시험해봤고, 뒤이어 실제 서브 PC에서도 잘 작동하는 것을 확인했습니다.
앞으로의 계획
이번에 자동화 설치 스크립트를 작성하면서, 꽤나 많은 삽질을 했습니다.
그 과정에서 배운 점들을 바탕으로, 앞으로도 닷파일을 지속적으로 개선해 나갈 계획입니다.
특히 이번엔 설치 스크립트 수준에서 처리했지만, 앞으로 nix
등을 도입해서 더 일관성 있는 환경을 구축하는 것도 고려해 볼 생각입니다. 하지만 쉘 스크립트 작성도 쩔쩔매는 판국에 언제 하지
작업중인 프로젝트도 정리해 가면서, 할 수 있는 것부터 힘내봅시다.