Skip to content
Gyunseo's Blog
Go back

Aqua를 이용하여 Windows에서 rutnime version을 관리하자

Suggest Changes

Table of contents

Open Table of contents

들어가며

Windows에는 Linux와 macOS에서 쓰이는 asdf라는 runtime version manager를 사용할 수 없다.
그래서 이것 저것 서칭을 해 보다가.
어떤 일본 분이 만드신 aqua라는 것을 알아 냈다.
그래서 이걸로 Windows에서 cli program version managing을 해 보려고 한다.
(아 이거 node, python 그리고 ruby 지원을 안 하네 ㅋㅋ)

번역하면 asdf가 지원하는 python, ruby, node.js는 aqua가 지원하지 않는다는 내용이다.
그래도 gobun은 설치가 되고, 뭔가 복잡한 설정을 하면 jdk도 설정이 가능하다! (하기 discussion 참고)

필자의 생각은 그냥 Windows면, nvm-windows, pyenv-win, jabba를 사용해서 runtime version managing을 하는 게 좋을 것 같다는 생각이 든다.(하기 포스트 참고)

aqua 설치

Download prebuilt binaries from GitHub Releases

상기 URI로 접속하여, Windows Binary를 다운로드 받는다.

환경 변수 AQUA_ROOT_DIR, PATH 설정

상기 이미지처럼 $env:LOCALAPPDATA\aquaproj-aqua\ 디렉터리에 bat 폴더와 bin 파일을 만들어 놓는다.
그리고 하기 사진처럼 bin\ 디렉터리에 다운로드 받아 놓았던 Windwos aqua binary를 복사해 놓는다.

그리고 Powershell에 Administrator 권한 session으로 접속한다.

[System.Environment]::SetEnvironmentVariable("AQUA_ROOT_DIR", "$env:LOCALAPPDATA\aquaproj-aqua", [System.EnvironmentVariableTarget]::Machine)

상기 이미지처럼 입력을 한다.
PowerToys에 들어가서 확인하니, 잘 바뀐 것을 알 수 있다.

그 다음 다시 일반 User Session으로 Powershell에 접속을 하고, 하기 명령어를 입력한다.

Set-Item Env:Path "$Env:AQUA_ROOT_DIR\bat;$Env:AQUA_ROOT_DIR\bin;$ENV:Path"

상기 이미지처럼 잘 환경 변수 PATH가 설정된 것을 알 수 있다.
그런데 이렇게 설정을 하면 Powershell Session이 종료되면, 다시 $env:PATH 값은 초기화 된다.
세션을 종료했다가, 다시 접속하면 하기 이미지처럼 다시 $env:PATH 값이 초기화 된 것을 알 수 있다.

그래서 초기화 되지 않게 하려면, Administrator 권한으로 Powershell에 접속하여, 하기 script를 입력한다.

$envPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
$newPath = "$Env:AQUA_ROOT_DIR\bat;$Env:AQUA_ROOT_DIR\bin;$envPath"
[System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::Machine)

그러면 상기 이미지 처럼 잘 변한 것을 확인할 수 있다.
다시 일반 User Session으로 Powershell에 접속하여, $env:PATH가 잘 설정됐는지 확인해 보자.

echo $env:PATH | findstr aquaproj-aqua

(잘 나오네 ㅎㅎ)

환경 변수 AQUA_GLOBAL_CONFIG 설정

하기 이미지처럼 $HOME 디렉터리에 .config 디렉터리를 생성한다.

그리고 .config 디렉터리 안에 aquaproj-aqua 디렉터리를 생성하고, aqua.yml 파일을 생성한다.

$env:LOCALAPPDATA\aquaproj-aqua\aqua.yaml:

---
# aqua - Declarative CLI Version Manager
# https://aquaproj.github.io/
# checksum:
#   enabled: true
#   require_checksum: true
#   supported_envs:
#   - all
registries:
  - type: standard
    ref: v4.104.0 # renovate: depName=aquaproj/aqua-registry
packages:
  - name: cli/cli@v2.40.1

그리고 User Session을 끊고, Administrator Session으로 Powershell에 접속한다.

$envAquaGlobalConfig = [System.Environment]::GetEnvironmentVariable("AQUA_GLOBAL_CONFIG", [System.EnvironmentVariableTarget]::Machine)
$newAquaGlobalConfig = "$env:LOCALAPPDATA\aquaproj-aqua\aqua.yaml;$envAquaGlobalConfig"
[System.Environment]::SetEnvironmentVariable("AQUA_GLOBAL_CONFIG", $newAquaGlobalConfig, [System.EnvironmentVariableTarget]::Machine)

상기 이미지처럼 환경 변수 AQUA_GLOBAL_CONFIG가 잘 설정된 것을 알 수 있다.

Administrator Session을 끊고 나와서, 다시 User Session으로 Powershell에 접속하여 gh version을 입력하면 global로 설치가 되어, command가 잘 먹는 것을 알 수 있다.

마치며

들어가며에도 써 놨지만, node.js, python3, ruby 와 같은 runtime 지원이 없다.
그래서 이 글에서 예시로 보여준 gh command 말고도, neovim version 관리로 쓰고 있다.

참고 문서


Suggest Changes
Share this post on:

Previous Post
Aqua를 이용해 Ubuntu에 neovim을 설치하자
Next Post
MST Kruskal Algorithm