213
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

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

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

備忘録としてメモ。

概要

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

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

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

謝辞

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
213
Help us understand the problem. What are the problem?