Chocolatey?
- linux를 다루다가 window로 넘어오면 가끔 화나는 부분이 있는데, 바로 종속성/프로그램 설치 부분이다.
- CLI로 개발을 하게 되는 경우, 프로그램 설치를
sudo apt install로 하던 ubuntu와 달리, windows는 그러한 프로그램이 전무하다.
- 이와 유사한 프로그램을 찾던 결과, chocolatey 가 매우 유사하고, 이를 소개하려 한다.
Chocolatey란 무엇인가?
- Chocolatey(초콜레티) 는 윈도우 환경을 위한 패키지 매니저다.
- Linux의
apt나 yum, macOS의 brew와 같은 역할을 수행한다고 보면 된다.
- 내부적으로는 NuGet 패키지 인프라를 사용하며, 복잡한 설치 마법사(MSI, EXE)를 클릭하며 "다음 > 다음 > 마침"을 누르는 과정을 단 한 줄의 명령어로 대체해 준다.
설치하기
- 설치 과정은 매우 간단하다. 단, PowerShell을 관리자 권한(Administrator) 으로 실행해야 한다.
주의: sudo가 없는 윈도우에서는 터미널 아이콘 우클릭 -> "관리자 권한으로 실행" 이 필수적이다.
cmd대신 pwsl로 설치하는 방법을 소개한다.
Windows + X 키를 누르고 Terminal(Admin) 또는 PowerShell(관리자) 를 실행한다.
- 아래 명령어를 복사하여 붙여넣는다. (공식 설치 스크립트)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- 설치가 완료되면
choco를 입력해 보자. 버전 정보가 뜬다면 설치 성공이다.
기본 사용법 (Basic Usage)
1. 패키지 검색 (search)
- 설치하고 싶은 프로그램이 있는지 확인할 때 사용한다.
choco search <keyword>
# 예: choco search git
2. 패키지 설치 (install)
-y 옵션을 붙이면 설치 중간에 묻는 동의 절차(Yes/No)를 자동으로 넘길 수 있다.
choco install <package_name> -y
# 예: choco install git vscode nodejs -y
- 위 예시처럼 스페이스로 구분하여 여러 프로그램을 한 번에 설치할 수도 있다. 이게 진짜 강력한 기능이다.
3. 패키지 업데이트 (upgrade)
- 윈도우 프로그램을 일일이 들어가서 업데이트 확인을 누르는 수고를 덜어준다.
# 특정 패키지 업데이트
choco upgrade git -y
# 설치된 모든 패키지 업데이트 (권장)
choco upgrade all -y
4. 패키지 삭제 (uninstall)
choco uninstall <package_name>
왜 Chocolatey를 써야 하는가?
개발 환경의 코드화 (Infrastructure as Code)
- 윈도우를 포맷하거나 새로운 장비를 세팅할 때, 우리가 설치해야 할 리스트(Git, Node, VSCode, Chrome, Docker 등)를 기억에 의존해서 설치하면 꼭 하나씩 빼먹는다.
- Chocolatey를 사용하면 아래와 같이 스크립트 파일(
setup.ps1) 하나로 퉁칠 수 있다.
# setup.ps1 예시
choco install git googlechrome vscode docker-desktop 7zip -y
- 이제 커피 한 잔 마시고 오면, 모든 개발 환경 세팅이 끝나 있다.
버전 관리의 용이성
- 프로그램들이 제각각 업데이트 알림을 띄우는 스트레스에서 해방된다.
- 아침에 출근해서
choco upgrade all -y 한 번이면 모든 툴이 최신 상태로 유지된다.
vs Winget (Windows Package Manager)
- 최근 Microsoft에서 공식적으로 만든 winget이 탑재되고 있다.
- Winget은 OS 기본 탑재라는 강력한 장점이 있지만, 아직 커뮤니티 패키지의 방대함이나 스크립트 제어의 성숙도는 Chocolatey가 앞서는 부분이 많다.
- 따라서, 당장 안정적이고 방대한 라이브러리가 필요하다면 Chocolatey는 여전히 최고의 선택지다.