윈도우 패키지 관리도구 Chocolatey 설치 및 제거

Chocolatey는 Windows 운영 체제를 위한 패키지 매니저입니다. Linux의 apt-get이나 yum과 같은 도구, 또는 macOS의 Homebrew(링크 업데이트 예정)와 비슷하게 작동합니다. Chocolatey를 사용하면 소프트웨어 설치, 업데이트 및 제거 등을 명령 줄에서 자동화할 수 있습니다. 패키지 관리자 더 알아보기

Chrome-브라우저-다운로드-페이지
Chrome 브라우저 다운로드 페이지

예를 들어, Chrome 브라우저를 설치할 때 우리는 네이버, Google과 같은 검색을 통해 Chrome 브라우저를 검색하고 Chrome 브라우저 설치 파일을 다운로드하는 웹 페이지로 이동해서 설치 파일을 내려받고 다시 또 설치하는 과정이 필요합니다. 하지만 chocolatey를 사용하면 choco install googlechrome이라는 명령어 한줄이면 설치할 수 있습니다.

이는 단일 앱을 설치할 때보다 대량의 장치 또는 여러 앱을 설치할 때 더욱 편리함으로 다가오는데요. 그래서 오늘은 Windows 환경에서 가장 널리 사용되는 패키지 관리자인 chocolatey를 설치하는 방법과 삭제하는 방법을 정리합니다.

[env]


[te]튜토리얼 환경: 윈도우 11 Pro (빌드: 22621.2134)[/te]

Chocolatey 설치하기

Chocolatey는 PowerShell 스크립트를 통해 쉽게 설치할 수 있습니다. powershell 더 알아보기

Chocolatey-설치
Chocolatey 설치

PowerShell을 관리자 권한으로 실행 후 다음 명령을 작성하거나 복사해서 붙여넣기한 뒤 Enter키로 실행합니다.

[cd txt=”❯” class=”lang-js”]
[sh]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’))
[/sh]
[/cd]

위 명령을 관리자 권한의 PowerShell에 작성하고 실행하면 chocolatey를 설치할 수 있습니다.

  • Set-ExecutionPolicy Bypass -Scope Process -Force: 스크립트 실행 정책을 현재 프로세스 범위에서 Bypass로 설정하고 강제로 실행합니다. 이렇게 함으로써 스크립트 실행에 제한이 풀립니다.
  • [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072: PowerShell이 HTTPS 통신에 필요한 보안 프로토콜을 활성화합니다. 3072는 TLS 1.2를 활성화하는 값입니다.
  • iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')): Chocolatey의 설치 스크립트를 인터넷에서 다운로드하고 실행합니다.

[cd txt=”❯” class=”black”]
[sh]choco[/sh]
[/cd]

설치 후 위와 같이 입력후 현재 설치된 chocolatey 버전이 표시되면 정상적으로 설치가 완료된 것 입니다.

Chocolatey v2.2.2
Please run 'choco -?' or 'choco <command> -?' for help menu.

Chocolatey 사용

Chocolatey를 설치 했다면 이제 choco 명령으로 간단하게 원하는 앱을 설치하고 관리할 수 있습니다. 자세한 내용은 Chocolatey 사용 문서를 확인하세요.

Chocolatey 제거하기

Chocolatey를 사용하다가 불필요하거나 오류가 발생한 경우 다음과 같이 명령어로 제거할 수 있습니다. 다만, 제거 후 시스템 환경 변수에 추가된 Chocolatey 경로로 같이 삭제하는 것이 좋습니다.

Chocolatey 제거

[cd txt=”❯” class=”black”]
[sh]Remove-Item ‘C:\ProgramData\chocolatey’ -Recurse -Force[/sh]
[/cd]

PowerShell 창에 다음 명령어를 입력하고 실행하세요. 이 명령어는 Chocolatey 패키지 관리자를 제거하며, Chocolatey가 설치된 디렉터리와 모든 파일 및 하위 디렉터리를 삭제합니다.

[cd txt=”❯” class=”black”]
[sh]choco[/sh]
[/cd]

Chocolatey가 성공적으로 제거되었는지 확인하려면 이렇게 입력합니다.

만약 Chocolatey가 정상적으로 제거되었다면 choco 명령어를 인식하지 못하고 오류 메시지가 나타날 것입니다.

choco : 'choco' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확
한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.
위치 줄:1 문자:1
+ choco
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (choco:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

환경변수 제거

Windows의 경우, 환경 변수 관리를 위해 setx 명령어를 사용할 수 있습니다. Chocolatey의 경로를 환경 변수에서 제거하려면 다음과 같이 명령을 실행하면 됩니다. 아래 예시는 Chocolatey의 경로를 PATH 환경 변수에서 제거하는 방법을 보여줍니다.

[cd txt=”❯” class=”black”]
[sh]$env:Path = [System.Environment]::GetEnvironmentVariable(‘Path’,’Machine’) -split ‘;’ | Where-Object { $_ -ne ‘C:\ProgramData\chocolatey\bin’ } -join ‘;’
[System.Environment]::SetEnvironmentVariable(‘Path’, $env:Path, ‘Machine’)
[/sh]
[/cd]

위 명령에서 C:\ProgramData\chocolatey\bin 부분은 Chocolatey의 설치 경로에 따라 달라질 수 있습니다. 이 명령을 실행하면 해당 경로를 PATH 환경 변수에서 제거합니다. 다른 환경 변수에 Chocolatey 경로가 설정되어 있는 경우에도 비슷한 방식으로 해당 환경 변수에서 Chocolatey 경로를 제거할 수 있습니다.

chocolatey 제거와 앱 패키지 제거의 관계

Chocolatey로 설치된 애플리케이션(패키지)들은 각각 별도의 프로그램으로서 시스템에 설치되어 있습니다. 따라서 이러한 애플리케이션들은 각각의 언인스톨 과정을 거칠 필요가 있으며, 일반적으로 choco uninstall 패키지이름 명령을 통해 개별적으로 제거할 수 있습니다. 하지만 전술한 Remove-Item 'C:\ProgramData\chocolatey' -Recurse -Force 명령을 실행하여 Chocolatey를 제거한다고 해도, 이로 인해 이미 설치된 패키지들(애플리케이션)까지 모두 자동으로 제거되는 것은 아닙니다.

그러나 주의할 점은 일부 비설치형(portable) 패키지나 파일만 복사하여 작동하는 특정 패키지들은 C:\ProgramData\chocolatey 디렉터리 내에 직접 저장될 수 있습니다. 이 경우 해당 디렉터리를 삭제하면 해당 애플리케이션이 함께 삭제될 가능성이 있다는 점입니다. 결국 완전한 clean-up을 원한다면 Chocolatey로 설치된 각 애플리케이션의 제거와 Chocolatey 자체의 제거이 두 가지 절차를 모두 수행해야 합니다. 이는 각각 별도의 과정이며, 한 과정이 다른 것을 자동으로 수행하지 않습니다.

관련글

[rpli]

Leave a Comment