Windows 10 のパッケージ管理エコシステムについて整理する。

  • 166
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

NIX 互換環境に見られるようなパッケージマネージャが Windows 10 で遂に公式にサポートされるようになった。既存のサードパーティ製パッケージマネージャを内包して抽象化するエコシステムが取られている。

備忘録としてメモ。

概要

上図のように、既存の NuGetChocolatey を 1 つの Provider として位置付け、PowerShell 上から共通インターフェースでそれらを扱える仕組みを提供している。

図の転載元記事にあるように、このエコシステムは PwerShellGetOneGet と呼ばれる。

2015 年 8 月末に PowerShell を始めとする Microsoft 公式のフレームワーク Windows Management Framework (WMF) の WMF 5.0 Production Preview として、また Windows の機能としてリリースされた。Windows 10 にはプリインストールされている。

Windows 7 以降であれば、WMF 5.0 Production Preview をダウンロードして導入できる:

PowerShell は様々なモジュールから構成されており、サードパーティモジュールを導入する事も可能だ。このモジュール導入を簡略化するシステムが PsGet としてコミュニティで開発されてきた:

WMF 5.0 ではこの PsGet が PowerShellGet モジュールとして採用されている模様。

上記仕組みの上で、パッケージマネージャー機能のモジュールを提供するのが OneGet になる:

そして WMF 5.0 の機能として取り込まれた OneGet は、PowerShell 5.0 のモジュールとして、 PackageManagement に名称が変更された模様。

PowerShellGet

リファレンス

man コマンド的なのは次の通り:

Get-Command -Module PowerShellGet
# PowerShellGet モジュールが持つコマンドレット一覧を表示

Get-Command Find-Module
# `Find-Module` コマンドレットのヘルプを表示

OneGet (Package Management)

プロバイダの導入

次のコマンドレットを実行して NuGetProviderChocolateyProvider をインストールして、この 2 つのパッケージマネージャを PackageManagement モジュールから利用可能にする:

Get-PackageProvider -Name NuGet
# NuGet を Provider に追加

Get-PackageProvider -Name Chocolatey
# Chocolatey を Provider に追加

完了したら適当にパッケージを検索してみる:

Find-Package -Name google-chrome-x64
# Chocolatey に登録されている Google Chrome (64-bit) を検索してみたり、
# https://chocolatey.org/packages/google-chrome-x64

Find-Package -Name Rx-Main
# NuGet に登録されている Reactive Extensions ライブラリを検索してみたり、
# https://www.nuget.org/packages/Rx-Main/

リファレンス

man コマンド的なのは次の通り:

Get-Command -Module PackageManagement
# PackageManagement モジュールが持つコマンドレット一覧を表示

Get-Command Find-Package
# `Find-Package` コマンドレットのヘルプを表示

コマンドレット一覧

Find-Package

利用可能なパッケージの検索と出力。

Find-Package [-Name パッケージ名]

Get-Package

インストール済みのパッケージ一覧を出力。

Get-Package [-Name パッケージ名]

Get-PackageProvider

ローカルの PackageManagement に登録されているパッケージマネージャ一覧を出力。

Get-PackageProvider [-Name マネージャ名]

Get-PackageSource

登録されている全てのパッケージマネージャ一覧を出力。

Get-PackageSource [-Name マネージャ名]

Install-Package

指定パッケージを 1 つインストール。

Install-Package -Name パッケージ名

Register-PackageSource

Save-Package

Set-PackageSource

Uninstall-Package

指定パッケージをアンインストール。

Uninstall-Package -Name パッケージ名

Unregister-PackageSource

謝辞