현재 OS Type, CPU Architecture에 맞는 바이너리 받기

반응형

 

개발을 할 때 특정 툴 또는 라이브러리 등을 설치하다 보면 OS Type과 CPU Architecture를 명시해줘야 되는 경우가 있습니다.

 

예를 들어 OS Type의 경우 darwin, linux 등이 있고, CPU Architecture는 amd64, arm64 등이 있습니다.

 

물론 많이 설치하다 보면 자연스럽게 외워지게 되어 문제는 없지만, 사용하는 환경이 변경된다거나 로컬 환경과 실제 배포 환경이 다른 경우에는 각각에 맞춰서 다른 명령을 실행해야 합니다.

 

이럴 때 알아주면 좋은 명령어 2가지가 있습니다.

 

OS Type

uname
  • Ubuntu에서 실행한 경우

  • MacOS에서 실행한 경우

CPU Architecture

dpkg --print-architecture
  • Apple M1, M2 Chip에서 실행한 경우

 

설치 명령어에 응용하기 

이 명령을 응용하게 되면 어디에서 실행하더라도 올바른 바이너리를 받아서 실행할 수 있게 할 수 있습니다.

 

예를 들어 아래의 명령은 kubectl 설치를 위한 명령입니다.

curl -LO "https://dl.k8s.io/release/v1.26.0/bin/linux/amd64/kubectl"

 

linux, amd64 부분을 위의 명령으로 대체하면 됩니다.

그런데 uname의 경우 첫글자가 대문자로 나오기 때문에, 이것을 소문자로 변경하기 위한 과정이 추가로 필요합니다.

그래서 완성 된 명령어는 아래와 같습니다.

 

curl -LO "https://dl.k8s.io/release/v1.26.0/bin/$(uname | awk '{print tolower($0)}')/$(dpkg --print-architecture)/kubectl"

 

다른 설치 명령에도 이것을 이용한다면 서로 다른 OS Type, CPU Architecture에서도 아무 문제없이 사용이 가능합니다.

반응형

'DevOps' 카테고리의 다른 글

Github Actions 실패 시 Slack으로 알림 보내기  (0) 2022.12.22