about_PackageManagement

about_PackageManagement

여러 패키지 관리 도구를 하나의 명령으로 다루고 싶다면, PackageManagement가 그 중심에 있어요. 이 모듈은 서로 다른 패키지 관리자들을 하나로 묶어 주는 집계기(aggregator) 역할을 하는데요, 어떤 설치 기술이 바닥에 깔려 있든 같은 명령으로 소프트웨어를 찾고, 설치하고, 목록을 확인할 수 있게 해 줍니다.

출처: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_packagemanagement

본문

짧은 설명

PackageManagement는 소프트웨어 패키지 관리자들의 집계기입니다.

자세한 설명

PackageManagement 기능은 Windows PowerShell 5.0에서 처음 도입됐어요.

PackageManagement는 소프트웨어 패키지 관리 시스템을 위한 통합 인터페이스인데, cmdlet을 실행해서 소프트웨어 탐색·설치·재고 파악(이를 SDII, Software Discovery, Installation, and Inventory라고 불러요) 작업을 할 수 있습니다. 바닥에 깔린 설치 기술이 무엇이든, PackageManagement 모듈의 공통 cmdlet을 실행해서 패키지를 검색·설치·제거하고, 패키지 저장소를 추가·제거·조회하며, 컴퓨터에 어떤 소프트웨어 패키지가 설치돼 있는지 쿼리할 수 있어요.

PackageManagement는 유연한 플러그인 모델을 지원해서, 다른 소프트웨어 패키지 관리 시스템도 지원할 수 있게 해 줍니다.

PackageManagement 모듈은 Windows PowerShell 5.0 이상의 PowerShell 릴리스에 포함돼 있고, 패키지 관리 구조의 세 가지 층위, 즉 패키지 공급자(package provider), 패키지 소스(package source), 그리고 패키지(package) 자체에서 동작합니다. 여기 쓰이는 용어부터 정의해 볼게요.

  • 패키지 관리자(Package manager): 소프트웨어 패키지 관리 시스템이에요. PackageManagement 용어로는 패키지 공급자에 해당합니다.
  • 패키지 공급자(Package provider): 패키지 관리자를 부르는 PackageManagement 용어예요. 예를 들어 Windows Installer, Chocolatey 같은 것들이죠.
  • 패키지 소스(Package source): 패키지 공급자가 저장소로 사용하도록 설정하는 URL, 로컬 폴더, 또는 네트워크 공유 폴더예요.
  • 패키지(Package): 패키지 공급자가 관리하고 특정 패키지 소스에 저장되는 소프트웨어 조각이에요.

PackageManagement 모듈에는 다음 cmdlet이 포함돼 있어요. 더 자세한 내용은 PackageManagement 도움말을 참고하면 됩니다.

  • Get-PackageProvider: PackageManagement에 연결된 패키지 공급자 목록을 반환해요.
  • Get-PackageSource: 패키지 공급자에 등록된 패키지 소스 목록을 가져와요.
  • Register-PackageSource: 지정한 패키지 공급자에 패키지 소스를 추가해요.
  • Set-PackageSource: 기존 패키지 소스의 속성을 설정해요.
  • Unregister-PackageSource: 등록된 패키지 소스를 제거해요.
  • Get-Package: 설치된 소프트웨어 패키지 목록을 반환해요.
  • Find-Package: 사용 가능한 패키지 소스에서 소프트웨어 패키지를 찾아요.
  • Install-Package: 소프트웨어 패키지를 하나 이상 설치해요.
  • Save-Package: 설치하지 않고 패키지를 로컬 컴퓨터에 저장해요.
  • Uninstall-Package: 소프트웨어 패키지를 하나 이상 제거해요.

패키지 공급자 부트스트래핑과 동적 cmdlet 매개 변수

기본적으로 PackageManagement는 핵심 부트스트랩 공급자(core bootstrap provider)와 함께 배포돼요. 추가 패키지 공급자가 필요해지면, 공급자를 부트스트래핑해서 설치할 수 있는데, 즉 웹 서비스에서 공급자를 자동으로 설치하라는 프롬프트에 응답하는 방식이에요. 어떤 PackageManagement cmdlet에서든 패키지 공급자를 지정할 수 있고, 지정한 공급자가 없으면 PackageManagement가 그 공급자를 부트스트랩(또는 자동 설치)하라고 프롬프트를 띄워 줍니다. 다음 예시에서 Chocolatey 공급자가 아직 설치돼 있지 않다면, PackageManagement 부트스트래핑이 그 공급자를 설치해 줘요.

Find-Package -Provider Chocolatey <PackageName>

앞의 명령을 실행할 때 Chocolatey 공급자가 아직 설치돼 있지 않다면, 설치하라는 프롬프트가 나와요.

Install-Package <Chocolatey package Name> -ForceBootstrap

앞의 명령을 실행하면 Chocolatey 공급자가 아직 없을 때 이 공급자가 설치되지만, 명령에 ForceBootstrap 매개 변수가 들어 있기 때문에 설치하라는 프롬프트는 나오지 않아요. 공급자와 패키지가 모두 자동으로 설치되죠.

패키지를 설치하려는데 지원 공급자가 아직 설치돼 있지 않고, 명령에 ForceBootstrap 매개 변수를 추가하지 않았다면, PackageManagement가 공급자를 설치하라고 프롬프트를 띄워 줍니다.

PackageManagement 명령에 패키지 공급자를 지정하면 그 공급자에 특화된 동적 매개 변수(dynamic parameters)를 쓸 수 있게 됩니다. 특정 PackageManagement cmdlet에 대해 Get-Help를 실행하면 매개 변수 집합 목록이 반환되는데, 사용 가능한 패키지 공급자들의 동적 매개 변수를 각각 별도의 매개 변수 집합으로 묶어서 보여줘요.

더 알아보기