kadota です。こんにちは。
現在、会社のPCをキッティング(導入・入れ替え時の初期設定やソフトのインストール)するときのために、
Windows構成デザイナーというMS謹製ツールを使ってプロビジョニング・パッケージを作ったりしています。
※Windows構成デザイナーはWindows ADKに含まれています
ソフトウェアのインストールといえば、Linuxの各種ディストリビューションにもそれぞれパッケージ管理システムがありますし、Macにも Home Brew があって便利です。
Windows でも最近はそういったパッケージ管理システムが利用できるそうなので、少し調べてみました。
Chocolatey
冒頭から、最近は、と書きましたが、2011年からすでにあったようです…
コマンドプロンプト、またはPowerShellでインストール。公式サイトに掲載されたコードを実行するだけです。
https://chocolatey.org/install
次のようなコマンドで、パッケージを探したりインストールしたりできます。わかりやすいです。
choco search hoge choco install hoge choco upgrade all
コミュニティでメンテナンスしているパッケージ一覧をみると、メジャーなものが並んでいますね。
https://chocolatey.org/packages
ただ2018年11月から、レートリミットが導入されたそうです。リクエストが多すぎた場合に一時制限されます。
https://chocolatey.org/docs/community-packages-disclaimer#rate-limiting
多くのマシンで同時にインストールやアップグレードを走らせるような場合、コミュニティのリポジトリから直接パッケージを取得せずに作業用のリポジトリを作ってそこを参照するほうが良いそうです。
カスタムパッケージを作って配布もできるようです。
利用例
導入済みのパッケージを一覧します。
PS C:\WINDOWS\system32> choco search -l Chocolatey v0.10.11 chocolatey 0.10.11 1 packages installed.
パッケージを探してみます。
PS C:\WINDOWS\system32> choco search adobereader Chocolatey v0.10.11 adobereader 2019.010.20064.01 [Approved] adobereader-update 18.011.20058 [Approved] Downloads cached for licensed users simnetsa-adobereader-fr 11.0.7 - Possibly broken adobereader-disable-updates-winconfig 0.0.1 [Approved] BR.AdobeReaderFR 11.0.09 - Possibly broken 5 packages found.
[Approved] と付いているものは、パッケージがチェックされ安全とみなされたものです。
インストールします。
PS C:\WINDOWS\system32> choco install adobereader Chocolatey v0.10.11 Installing the following packages: adobereader By installing you accept licenses for the packages. Progress: Downloading KB2919355 1.0.20160915... 100% Progress: Downloading KB2919442 1.0.20160915... 100% Progress: Downloading adobereader 2019.010.20064.01... 100% (略)
インストール時に -y オプションを付けておけば途中の確認をすっとばせます。
PackageManagement
MSの公式パッケージマネージャー。 パッケージマネージャーをさらに束ねる立ち位置で、NuGet や Chocolatey などの「パッケージプロバイダー」を登録し、統一されたコマンドで指示するラッパーになっています。
一般的には登録パッケージの状況から、PackageManagement でも chocolatey に依存することにはなるようです。chocolatey 以外のプロバイダーも利用するかどうかで PackageManagement を使うか決めてもいいかもしれません。
公式なのでPackageManagementのインストール的なものはなく、いきなり使えます。
パッケージプロバイダーを眺めてみます。
初回は NuGet が入ってない場合インストールを促されます。
PS C:\WINDOWS\system32> Find-PackageProvider プロバイダー 'nuget v2.8.5.208' がインストールされていません。 nuget は、https://oneget.org/Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll から手動でダウンロードしてインストールすることができます。 PackageManagement で nuget を自動的にダウンロードしてインストールしますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): 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.4 PSGallery PowerShell module with commands for discovering, in... 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... 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... GitLabProvider 1.3.8 PSGallery GitLab PackageManagement provider 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 ... 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.16.1 PSGallery OneGet Package Provider for Zero Install 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... ChocoOneGet 0.4.0 PSGallery OneGet provider for Chocolatey
色々なパッケージプロバイダーが出てきます。
ここでは PackageManagement を通して Chocolatey を入れます。
PS C:\WINDOWS\system32> Get-PackageProvider Chocolatey プロバイダー 'chocolatey v2.8.5.130' がインストールされていません。 chocolatey は、https://oneget.org/ChocolateyPrototype-2.8.5.130.exe から手動でダウンロードしてインストールすることができます。 PackageManagement で chocolatey を自動的にダウンロードしてインストールしますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y Name Version DynamicOptions ---- ------- -------------- Chocolatey 2.8.5.130 SkipDependencies, ContinueOnFailure, ExcludeVersion, ForceX86, PackageSave...
ところが、調べてみると Chocolatey より ChocolateyGet のほうが良いとの話があり…
ほかにも出来たての ChocoOneGet というのもありますね。
ChocolateyGet のほうも入れてみます。
Source が "PSGallery" のものは、外部からPowerShellスクリプトを取得するので、これを利用する場合はPC側のスクリプト実行ポリシーを修正する必要があるようです。
ポリシーの初期値はRestrictedなので、リモートの場合に署名付きならOKな設定 RemoteSigned に緩めます。
PS C:\WINDOWS\system32> Get-ExecutionPolicy Restricted PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y
インストールします。
PS C:\WINDOWS\system32> Install-PackageProvider ChocolateyGet パッケージは、信頼済みとマークされていないパッケージ ソースから取得されています。 'PSGallery' からソフトウェアをアンインストールしますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y Name Version Source Summary ---- ------- ------ ------- ChocolateyGet 1.0.0.1 PSGallery An PowerShell OneGet provider that discovers packag...
「'PSGallery' からソフトウェアをアンインストールしますか?」というのは誤りのようです。 y でふつうにインストールできます。
Chocolatey に関するパッケージプロバイダが2つ入った状態になりました。
利用例
パッケージを探してみます。
PS C:\WINDOWS\system32> Find-Package GoogleChrome Name Version Source Summary ---- ------- ------ ------- GoogleChrome 71.0.3578.98 chocolatey Chrome is a fast, simple, and secure web browser, b... GoogleChrome 71.0.3578.98 https://www.c...
ChocolateyGet だけを対象にする場合、-Provider オプションを付けます。
PS C:\WINDOWS\system32> Find-Package GoogleChrome -Provider ChocolateyGet Name Version Source Summary ---- ------- ------ ------- GoogleChrome 71.0.3578.98 https://www.c...
パッケージをインストールする場合も同じです。
Install-Package GoogleChrome -Provider ChocolateyGet
PackageManagement、ほかにも GitHubProvider, OfficeProvider など面白そうなプロバイダーも並んでいますし、今後の発展に期待したいです。
最後に
アクトインディではエンジニアを募集しています。