Windows

Windowsのパッケージ管理システムはPackageManagementを使うと良いらしい

More than 1 year has passed since last update.

Windows環境のパッケージ管理システムについて調べた。

現在、Windows環境のパッケージ管理システムについて検索すると幾つかのシステムがヒットするが、それぞれ役割が違ったり、微妙に重複する部分があったりと少し混乱する部分もあった。頭の整理を兼ねて一度まとめてみる。

パッケージ管理システムとは

ここでは、Linuxのyumapt-get、MacのHomebrewなど、コマンドラインでパッケージのインストール、アンインストールを管理できるシステムを想定している。

結論

2016年1月現在においては、まずWindows標準のPackageManagementを使うのが良いと思った。

Windows環境のパッケージ管理システムとしてはこれまでChocolateyが有名だったと思うが、PackageManagementChocolateyを含めた様々なパッケージプロバイダに対して統一的なアクセスを提供する。

PackageManagement

PackageManagemtは、Powershellから利用できるモジュールで、Windows10には初めからインストールされており、それ以前のOSでもWindows Management Framework 5.0 Previewをインストールすることで使えるようになる。

基本的な使い方

-ModuleでPowershellモジュールの検索・インストール・アンインストール、-Packageで各種アプリケーションの検索・インストール・アンインストールができる。

# Powershellモジュール
Find-Module -Name hogehoge
Install-Module -Name hogehoge
Uninstall-Module -Name hogehoge

# 各種アプリケーション
Find-Package -Name fugafuga
Install-Package -Name fugafuga
Uninstall-Package -Name fugafuga

プロバイダの追加

プロバイダという形でパッケージの配布元を追加することができる。

Get-PackageProvider foobar

その他のパッケージ管理システム

その他のパッケージ管理システムとPackageManagementとの関係を整理する。

OneGet

PackageManagement(aka OneGet)とある通り、PackageManagementの別名がOneGetであるらしい。

そもそもはOneGetという名前で開発されてきたが、Windows10に正式採用されるにあたりPackageManagementという名前になったようである。

NuGet

VisualStudioに付属しているパッケージ管理システムで、主に開発用のライブラリの管理に使用される。

PackageManagementのプロバイダの一つとしても利用できるようだが、基本的にはVisualStudioから使うものと考えて良いと思う。

Chocolatey

PackageManagement以前から存在するパッケージ管理システム。パッケージのラインナップが充実している。

Get-PackageProvider chocolatey

とすることで、PackageManagementからChocolateyのパッケージを使用することができる。

PackageManagement単体では実用できるほどパッケージが揃わないため、現状ではChocolateyの追加は必須になると思う。

PSGet

Powershellのモジュールを管理するためのシステムだが、PackageManagementのPowershellモジュール管理機能と完全に被っている。

Windows10で正式採用されたPSReadLineモジュールがPSGetからPackageManagementに引っ越しし、PSGetからの入手は非推奨になるなどしているので、今後はPackageManagementに移行していくことになるかもしれない。

PackageManagementのPowershellモジュール管理機能はPowerShellGetと呼ばれ、利用可能なモジュールはPowerShell Galleryで公開されている。

注意事項

PackageManagementの動作は、まだ怪しい部分があるように感じる。最近では「インストール完了」と表示されているのに、実際にはインストールできていないということがあった。

また、とくにアンインストールの動作はパッケージごとに動作のばらつきが多い印象がある。

まとめ

動作に多少怪しい部分はあるが、Windows10であれば、標準機能のPackageManagemetChocolateyのプロバイダを追加して、おおよそのアプリを揃えることができるようになった。

この調子でUNIX系のOSと同じ程度に、コマンド一発または構成管理ツール一撃で環境構築ができるようになると嬉しい。