Windows Package Manager, Chocolatey 사용하기

맥을 사용하는 개발자들은 프로그램을 설치하면서 주로 Homebrew를 이용하게 됩니다. 물론 이런 패키지 매니저를 사용하지 않아도 간단한 프로그램이야 웹사이트에 들어가서 설치 파일을 이용할 수도 있습니다. 하지만, 개발에 필요한 언어의 바이너리나 작은 프로그램의 경우에는 설치 파일을 제공하지 않기도 합니다. 더 번거로운 경우에는 손으로 PATH를 직접 설정해야 할 수도 있습니다. 이런 경우에 패키지 매니저의 도움을 받는다면 손쉽게 프로그램을 설치할 수 있습니다.

Chocolatey는 윈도우 환경에 대한 패키지 매니저입니다. 이를 이용하면 커맨드를 이용하여 프로그램을 설치, 삭제할 수 있습니다. 특히, 설치 파일이 존재하지 않은 Portable 프로그램이나 Zip 파일로 압축된 프로그램도 설치가 가능합니다. 다만 프로그램을 설치하기 위해서는 대부분의 경우에 관리자 권한을 요구하고 있습니다. 설치 프로그램을 모두 ProgramData 폴더에서 관리하기 때문입니다. 이제 이를 어떻게 설치하고 사용할 수 있는지 알아보도록 하겠습니다.

설치

Chocolatey의 설치는 Powershell 스크립트를 이용하여 진행됩니다. 관리자 권한으로 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'))
Code language: PHP (php)

그리고 choco 명령이 정상적으로 버전을 출력하는지 확인합니다.

PS C:\Users\laman> choco
Chocolatey v0.11.1
Please run 'choco -?' or 'choco <command> -?' for help menu.
Code language: JavaScript (javascript)

사용

저는 Powershell보다는 Git-Bash를 선호해서 앞으로는 Windows Terminal 기반의 Git-Bash로 진행하겠습니다. Chocolatey가 설치 완료되었으므로 이제 커맨드로 프로그램을 설치할 수 있습니다.

패키지 설치

먼저 원하는 프로그램을 찾습니다.

choco list dropbox
Code language: PHP (php)

그러면 관련 프로그램 목록이 출력됩니다.

Chocolatey v0.11.1
dropbox 133.4.4089 [Approved] Downloads cached for licensed users
dropbox-for-gmail-chrome 1.1.6 [Approved]
papyrus 1.0.2 [Approved] Downloads cached for licensed users
pneumatictube.portable 1.3.0.0 [Approved] Downloads cached for licensed users
dropboxifier 0.1.8 [Approved] Downloads cached for licensed users - Possibly broken for FOSS users (due to original download location changes by vendor)
BoxCryptorClassic 1.7.409.20180501 [Approved] Downloads cached for licensed users - Possibly broken for FOSS users (due to original download location changes by vendor)
arq 6.2.11 [Approved] Downloads cached for licensed users
raidrive 2021.5.20 [Approved]
enpass.install 6.7.2.887 [Approved] Downloads cached for licensed users
netdrive 3.8.987 [Approved] Downloads cached for licensed users
expandrive 2021.08.03 [Approved]
mountainduck 4.7.2.18403 [Approved] Downloads cached for licensed users
boxcryptor 2.48.1906 [Approved] Downloads cached for licensed users
cyberduck 7.10.2.35432 [Approved] Downloads cached for licensed users
duck 7.10.3.35460 [Approved] Downloads cached for licensed users
invantive-bridge-developers 20.0.154 [Approved] Downloads cached for licensed users
invantive-bridge-connectors-power-bi 20.2.3 [Approved]
invantive-bridge-power-bi-users 20.2.3 [Approved]
invantive-composition-for-word 20.2.53 [Approved]
invantive-data-hub 20.2.58 [Approved]
invantive-query-tool 20.2.58 [Approved]
invantive-control-for-excel 20.2.58 [Approved]
google-drive-add-to-explorer 1.0.2 [Approved]
keepass-plugin-keeanywhere 2.0.3 [Approved]
screencloud 1.5.3 [Approved]
digime 7.1.5 [Approved] Downloads cached for licensed users
keepass-plugin-keecloud 1.2.0.3 [Approved]
cryptsync 1.2.7 [Approved] Downloads cached for licensed users
tcp-cloud 2.40 [Approved]
spideroak 5.1.8.20140925 - Possibly broken
encfsmp 0.11.1 [Approved]
cryptomator 1.5.17 [Approved] Downloads cached for licensed users
playnite 9.4 [Approved] Downloads cached for licensed users
duplicacy 2.7.2 [Approved] Downloads cached for licensed users
choco-package-list-backup 2021.09.25 [Approved]
keeweb 1.18.6 [Approved]
36 packages found.
Code language: CSS (css)

아무래도 맨 처음에 나온 패키지가 원하는 패키지일 것 같습니다. 바로 설치를 해봅니다.

choco install dropbox -y

잠시 시간이 지나고 나면 설치가 완료되어 있습니다.

Chocolatey v0.11.1
Installing the following packages:
dropbox
By installing, you accept licenses for the packages.
Progress: Downloading dropbox 133.4.4089... 100%

dropbox v133.4.4089 [Approved]
dropbox package files install completed. Performing other installation steps.
Downloading dropbox
  from 'https://edge.dropboxstatic.com/dbx-releng/client/Dropbox%20133.4.4089%20Offline%20Installer.exe'
Progress: 100% - Completed download of C:\Users\laman\AppData\Local\Temp\chocolatey\dropbox\133.4.4089\Dropbox 133.4.4089 Offline Installer.exe (136.12 MB).
Download of Dropbox 133.4.4089 Offline Installer.exe (136.12 MB) completed.
Hashes match.
Installing dropbox...
dropbox has been installed.
  dropbox may be able to be automatically uninstalled.
 The install of dropbox was successful.
  Software installed to 'C:\Program Files (x86)\Dropbox\Client'

Chocolatey installed 1/1 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Code language: JavaScript (javascript)

패키지 삭제

삭제도 같은 방법으로 진행됩니다.

choco uninstall dropbox -y

삭제는 반드시 삭제 여부를 다시 물어봅니다.

Chocolatey v0.11.1
Uninstalling the following packages:
dropbox

dropbox v133.4.4089
Uninstalling dropbox...
0
dropbox has been uninstalled.
 Running auto uninstaller...

  Did you know licensed versions of Chocolatey are 95% effective with
   Automatic Uninstaller due to licensed enhancements and Package
   Synchronizer?

For the question below, you have 30 seconds to make a selection.
Uninstall may not be silent (could not detect). Proceed?([Y]es/[[N]o]): Y

 Auto uninstaller has successfully uninstalled dropbox or detected previous uninstall.
 Auto uninstaller has successfully uninstalled dropbox or detected previous uninstall.
 dropbox has been successfully uninstalled.

Chocolatey uninstalled 1/1 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Code language: JavaScript (javascript)

별다른 오류 없이 정상적으로 삭제가 완료되었습니다.

패키지 목록

설치된 프로그램 목록은 다음과 같이 확인할 수 있습니다.

choco list -l
Code language: PHP (php)
Chocolatey v0.11.1
awscli 2.2.38
awscli-session-manager 1.2.54.0
chocolatey 0.11.1
chocolatey-core.extension 1.3.5.1
chocolatey-dotnetfx.extension 1.0.1
chocolatey-misc-helpers.extension 0.0.4
dbeaver 21.2.0
discord 1.0.9002
discord.install 1.0.9002
docker-desktop 4.0.1
DotNet4.5.2 4.5.2.20140902
dotnetfx 4.8.0.20190930
...
Code language: CSS (css)

뭐가 많이도 설치가 되어있군요.

패키지 업데이트

시간이 지나면 설치된 패키지가 최신 버전이 아닐 겁니다. 업데이트가 필요한 목록은 다음과 같이 확인 가능합니다.

choco outdated

그리고 목록 전체를 업데이트 하려면 패키지 이름을 지정하지 않고 명령어를 수행하면 되지만, 저는 awscli 하나만 업데이트 하기 위해서 패키지 이름을 지정해보겠습니다.

choco upgrade awscli -y

많은 경우에 업그레이드는 기존 설치된 버전을 삭제하고 최신 버전을 다시 설치하는 것으로 보입니다.

Chocolatey v0.11.1
Upgrading the following packages:
awscli
By upgrading, you accept licenses for the packages.

You have awscli v2.2.38 installed. Version 2.3.0 is available based on your source(s).
Progress: Downloading awscli 2.3.0... 100%

awscli v2.3.0 [Approved]
awscli package files upgrade completed. Performing other installation steps.
Downloading awscli 64 bit
  from 'https://awscli.amazonaws.com/AWSCLIV2-2.3.0.msi'
Progress: 100% - Completed download of C:\Users\laman\AppData\Local\Temp\chocolatey\awscli\2.3.0\AWSCLIV2-2.3.0.msi (27.12 MB).
Download of AWSCLIV2-2.3.0.msi (27.12 MB) completed.
Hashes match.
Installing awscli...
awscli has been installed.
  awscli may be able to be automatically uninstalled.
Environment Vars (like PATH) have changed. Close/reopen your shell to
 see the changes (or in powershell/cmd.exe just type `refreshenv`).
 The upgrade of awscli was successful.
  Software installed as 'MSI', install location is likely default.

Chocolatey upgraded 1/1 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Code language: JavaScript (javascript)

맺음말

Chocolatey와 같은 패키지 매니저를 사용하면 웹사이트를 검색하지 않고도 손쉽게 패키지를 설치하고 관리할 수 있게 됩니다. 특히, 컴퓨터를 포맷하는 경우에 대비해서 미리 목록을 만들어 놓는다면 최초 프로그램 설치를 매우 간단하게 단 하나의 커맨드로 해결할 수 있습니다. 한 가지 아쉬운 점은 모든 프로그램이 패키지로 등록되어 있지는 않다는 것입니다. 패키지 등록 프로세스가 난해한 것은 아니지만, 아무래도 잘 모르는 사람들이 많기 때문에 좀 더 널리 사용될 수 있도록 더 많은 개발자들이 신경써서 Chocolatey에 패키지 등록을 진행하면 좋겠습니다.

최근에는 마이크로소프트에서도 Winget이라는 패키지 매니저를 발표했습니다. 아직은 msix, msi, exe installer가 있어야만 패키지 등록이 가능하기 때문에 등록 자체부터 제한적이며, 사용 가능한 범위도 최신 윈도우 10으로 제한되는 것 같습니다. 그래도 마이크로소프트에서 주도해서 개발하고 있는 패키지 매니저이므로 잠재력은 Chocolatey보다 더 좋게 보고 있습니다. 뭐가 되었든 간에 보다 많은 사람들이 편리한 패키지 매니저를 이용했으면 좋겠습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *