布団が俺を呼んでいる

丘山大一のぶろぐ

PackageManagement に挑戦

秋のOS見直し祭りにつき、諸々再インストール中。
でも色々インストールしなおすのって面倒ですよね。
というわけで、Windows のPackageManagement に初挑戦です。
れっつとらい。


まず動かしてみる

PowerShell を管理者権限で実行。
Find-PackageProvider
すると「プロバイダー 'nuget v2.8.5.208' がインストールされていません。」云々と表示されますが、ここは素直に「Y」で入れておく。
ちょっとしてからプロパイダの一覧が出てくる。

Name                           Version          Source           Summary
----                           -------          ------           -------
nuget                          2.8.5.208        https://onege... NuGet provider for the OneGet meta-package manager
psl                            1.0.0.210        https://onege... psl provider for the OneGet meta-package manager
chocolatey                     2.8.5.130        https://onege... ChocolateyPrototype provider for the OneGet meta-pa...
PowerShellGet                  2.0.1            PSGallery        PowerShell module with commands for discovering, in...
DockerProvider                 0.0.0.3          PSGallery        PowerShell module with commands for discovering, in...
ContainerImage                 0.6.4.0          PSGallery        This is a PackageManagement provider module which h...
NanoServerPackage              1.0.1.0          PSGallery        A PackageManagement provider to  Discover, Save and...
DockerMsftProvider             1.0.0.5          PSGallery        PowerShell module with commands for discovering, in...
ChocolateyGet                  1.0.0.1          PSGallery        An PowerShell OneGet provider that discovers packag...
DockerMsftProviderInsider      1.0.0.2          PSGallery        PowerShell module with commands for discovering, in...
GistProvider                   0.6              PSGallery        Gist-as-a-Package - PackageManagement  PowerShell P...
GitHubProvider                 0.5              PSGallery        GitHub-as-a-Package - PackageManagement PowerShell ...
GitLabProvider                 1.3.7            PSGallery        GitLab PackageManagement provider
TSDProvider                    0.2              PSGallery        PowerShell PackageManager provider to search & inst...
OfficeProvider                 1.0.0.1          PSGallery        OfficeProvider allows users to install Microsoft Of...
MyAlbum                        0.1.2            PSGallery        MyAlbum provider discovers the photos in your remot...
0install                       2.15.1           PSGallery        Zero Install is a decentralized cross-platform soft...
AppxGet                        0.1.0.1          PSGallery        Powershell Package Management (OneGet) Provider for...
WSAProvider                    1.0.0.4          PSGallery        Provider to Discover, Install and inventory windows...
Pacman-Provider                0.0.1            PSGallery        Pacman provider enables installation of pacman pack...

続けて、現在入っているものを見てみる。
Get-PackageProvider

Name                     Version          DynamicOptions
----                     -------          --------------
msi                      3.0.0.0          AdditionalArguments
msu                      3.0.0.0
NuGet                    2.8.5.208        Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag, Contains, AllowPrer...
PowerShellGet            1.0.0.1          PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, InstallUpdate, NoPath...
Programs                 3.0.0.0          IncludeWindowsInstaller, IncludeSystemComponent

ほほー。msiもここに含まれるんですね。
さて、ちょろっと調べた感じだと、解説記事ではだいたいchocolatey を入れるのがお約束みたいです。
タブン先人に倣ってやれば間違いないのでしょうが、せっかくなので他のプロパイダのドキュメントを軽く調べてみます。

DockerMsftProvider と DockerProvider

DockerMsftProviderは以前、Windows Server で Docker を操作するときに入れました。
ではDockerProvider ってなんじゃらほい、と思いましたが、どうやらDockerMsftProviderの対応が遅れている間に使用されていたものみたいですね。最終更新日が2017年9月で止まっているので、今はあまり使われてなさそうです。

DockerMsftProviderInsider

上記のInsider版ですかね。タブン。

ContainerImage

Windows Server のコンテナを利用するときに使うみたいです。Windows Server 専用ですかね。

NanoServerPackage

その名の通り、NanoServer を利用するために使用するみたいですが、VHDイメージの構築にも利用できるみたいです。NanoServer を使用しない場合は不要でしょうか。

ChocolateyGet

chocolateyとなにが違うのだろう……?と調べると、どうやらchocolateyプロパイダを普通に使うと問題がある場合があるみたいですね。その代替として使われているみたいです。
にも「Use ChocolateyGet for now.」と書かれています。本家推奨の模様。
ダウンロード数でもこちらの方が多いみたい。

GistProvider

Gist のファイルを落としてこれる? みたいです。パッケージ管理というよりgithubサポートなのかな?

GitHubProvider

ざっと見る感じ、github公開のソースをzipで落としてきて、解凍するものみたいです。
Windows上でgitが使いやすくなったので、あまり使わないかな?

GitLabProvider

上記GitHubProviderのGitLab版ぽいです。

TSDProvider

TypeScript の定義ファイル(?)をhttps://github.com/DefinitelyTyped/DefinitelyTyped から引っ張ってくる(?)のでしょうか。
スイマセン、TypeScript知らないのでなんとも……

OfficeProvider

Office365 ProPlusを入れるためのものみたいです。自動展開とかしたい人向け?

MyAlbum

PackageManagement プロパイダ開発用のサンプルみたいです。

0install

Zero Instrall というクロスプラットフォーム対応のパッケージ管理システムを利用するためのプロパイダ。
便利そうですが、ダウンロード数の少なさが気になります。

AppxGet

ストアアプリの管理用途?
さらっと見た感じ、インストール済アプリの表示とアンインストールができそうです。
(新規のインストールはできない? 未検証)

WSAProvider

WIndows Server(nano Server) にAppX のアプリケーションを入れるためのもののようです。

Pacman-Provider
不明。
よくわかりませんでした……。なんなんだろう。


どれを入れるべきか

実質、chocolatey、ChocolateyGet 、0install の三択になりそうです。
Windows Server 利用ならdocker関係も使えそうです。


PowerShell実践ガイドブック ~クロスプラットフォーム対応の次世代シェルを徹底解説~

新品価格
¥3,974から
(2018/10/29 00:23時点)

コメントを書く