Windowsでもパッケージ管理がしたい

PowerShell

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。

たまにWindows Serverを触ることがあるのですが、ちょっとしたサードパーティのツールをインストールする時が少し面倒だったりします。Linuxのメジャーなディストリビューションでは標準のパッケージ管理システムがあり簡単にインストールすることができます。Windowsでは標準というべきものがなかったのですが、PackageManagementが標準になりそうなので試してみました。

パッケージ管理システム

Linuxの場合は、ディストリビューションの標準として導入されています。有名な物だと、以下の様なものでしょうか。

  • APT:Debian、Ubuntu
  • yum:RHEL、CentOS、Amazon Linux
  • DNF:Fedora

Windowsの世界は詳しくないのですが、調べてみると色々あるようで、例えば以下です。

  • Web PI
  • NuGet
  • Chocolatey
  • PackageManagement

この中で、今後主流になりそうなのがPackageManagementの様です。PackageManagementはPowerShell 5.0に含まれる機能であるため、今後はOSに標準で搭載されるみたいです。
(すでにWindows 10には標準で入っているみたいですが最近クライアント用Windowsを触っていないので知りませんでした。。。)

PackageManagement

PackageManagementは元々OneGetという名前で開発されていたプロダクトで、Apache License 2.0を採用しています。

PackageManagementのアーキテクチャ図を見ると、エンドユーザはPowerShellコマンドレットを操作して、ディスカバリやインストール/アンインストール、インベントリを行うようです。各種プロバイダを経由してパッケージを取得します。

導入してみる

Windows Server 2012 R2へ導入してみます。PowerShell 5.0をインストールするためにWindows Management Framework 5.0をダウンロードします。
ダウンロード対象ファイルは以下の5種類があるので、Windows Server 2012 R2に対応しているWin8.1AndW2K12R2-KB3134758-x64.msuをダウンロードします。

ファイル名 アーキテクチャ 対象OS
W2K12-KB3134759-x64.msu x64 Windows Server 2012
Win7AndW2K8R2-KB3134760-x64.msu x64 Windows Server 2008 R2、Windows 7 SP1
Win7-KB3134760-x86.msu x86 Windows 7 SP1
Win8.1AndW2K12R2-KB3134758-x64.msu x64 Windows Server 2012 R2、Windows 8.1
Win8.1-KB3134758-x86.msu x86 Windows 8.1

ダウンロードしたWin8.1AndW2K12R2-KB3134758-x64.msuを実行します。
はい(Y)をクリックします。

OneGet

ライセンス条項を確認して、同意します(A)をクリックします。

OneGet

インストールが始まります。

OneGet

インストールが完了したら今すぐ再起動をクリックして再起動します。

OneGet

PackageManagementを使用してみる

まずは、PowerShellのスクリプトを実行するためスクリプトの実行を許可します。

PS C:\Users\Administrator> Set-ExecutionPolicy RemoteSigned -Force

設定されているプロバイダーを確認するためにFind-PackageProviderコマンドレットを実行します。プロバイダのDLLを自動でインストールするために-ForceBootstrapオプションを付けます。

PPS C:\Users\Administrator> Find-PackageProvider -ForceBootstrap

Name                           Version          Source                         Summary
----                           -------          ------                         -------
nuget                          2.8.5.205        https://oneget.org/nuget-2.... NuGet provider for the OneGet meta-pa...
chocolatey                     2.8.5.130        https://oneget.org/Chocolat... ChocolateyPrototype provider for the ...
ContainerImage                 0.6.4.0          PSGallery                      This is a PackageManagement provider ...
NanoServerPackage              0.1.1.0          PSGallery                      A PackageManagement provider to disco...
MyAlbum                        0.1.2            PSGallery                      MyAlbum provider discovers the photos...
GistProvider                   0.6              PSGallery                      Gist-as-a-Package - PackageManagement...
GitHubProvider                 0.5              PSGallery                      GitHub-as-a-Package - PackageManageme...
TSDProvider                    0.2              PSGallery                      PowerShell PackageManager provider to...
OfficeProvider                 1.0.0.1          PSGallery                      OfficeProvider allows users to instal...
GitLabProvider                 1.2.0            PSGallery                      GitLab PackageManagement provider
WSAProvider                    1.0.0.4          PSGallery                      Provider to Discover, Install and inv...

ここではVisual Studio Codeをインストールしてみます。

Visual Studio Codeはchocolateyにあるので、パッケージを確認してみます。

PS C:\Users\Administrator> Find-Package -ForceBootstrap -Name VisualStudioCode -Provider chocolatey

Name                           Version          Source                         Summary
----                           -------          ------                         -------
VisualStudioCode               1.2.1            chocolatey                     Visual Studio Code

Visual Studio Codeをインストールします。

PS C:\Users\Administrator> Install-Package -Name VisualStudioCode -Force

Name                           Version          Source                         Summary
----                           -------          ------                         -------
VisualStudioCode               1.2.1            chocolatey                     Visual Studio Code

このようにVisual Studio Codeがインストールされます。

OneGet2

このようにVisual Studio Codeを起動できます。

OneGet2

さいごに

Windowsの次期サーバOSであるWindows Server 2016ではPowerShell 5.0が標準で入るので、PackageManagementも最初から使用できることになります。Windowsでも標準で簡単にパッケージ管理が行えるようになり、OSの管理が捗りそうです。

AWS Cloud Roadshow 2017 福岡