오리 도서관/(미분류) 삽질 방지 개발 지식

[vcpkg] 특정 버전의 패키지를 받고 싶을 때

Kwon_Ori 2025. 1. 2. 23:33

서론

사내 네트워크 환경에서 vcpkg 를 사용하여 특정 프로젝트에 openssl 을 사용하도록  port 를 추가했는데 계속 실패가 발생했다.

 

외부 환경인 집에서는 별탈 없이 되는 것으로 보아 규칙이 불분명하기로 악명 높은 차단 규칙에 걸린 것 같았다. 혹시 몰라 특정 프로젝트가 아닌 vcpkg 루트에서 받도록 하니 놀랍게도 성공해버렸다. (왜 되는거야?)

 

뭐가 달랐는지 확인 해보니 다운로드 실패가 발생했던 것은 3.3.0 버전이고, 성공을 했던 것은 3.4.0 버전이었다. 이전에 인프라팀과 이야기했을 때를 떠올려보면 저가의(...) 솔루션을 사용하면서 본인들도 지정하지 않은 영문 모를 사유로 3.3.0 버전이 차단된  것 같다.

 

같은 환경인데 어째서 특정 프로젝트에서 받을 땐 3.3.0 이고 vcpkg 본체에서 받았을 때 3.4.0 이 받아졌는지는 알 수 없었지만... 일단 성공적으로 받아진 녀석을 쓰기 위해 open ssl 버전을 특정 버전으로 고정할 필요가 있었다.

 

본론

서론이 불필요하게 길었는데, 프로젝트에만 관여하는 vcpkg.json 파일을 다음과 같이 설정해주면 특정 버전을 받을 수 있다. overrides 배열을 추가하고, dictionary 로 이름과 버전을 명시해주면 끝이다. 공식 문서에는 그 외의 방법도 많으니 이것저것 테스트 해봐야겠다.

{
  "dependencies": [
    "zlib",
    "openssl"
  ],
  "overrides":[
    {
        "name": "openssl",
        "version": "3.4.0"
    }
  ]
}

 

참고 자료

https://learn.microsoft.com/en-us/vcpkg/consume/lock-package-versions?tabs=inspect-powershell

 

Tutorial: Install a specific version of a package

Learn to install specific versions of your dependencies using vcpkg in your projects.

learn.microsoft.com