7cc@はてなブログ

JavaScriptとかとか

Chocolatey と PackageManagement(OneGet)

Chocolateyを使う方法は2つあります。

  1. Chocolateyから choco install 7zip
  2. PackageManagementから install-package -name 7zip -ProviderName ChocolateyGet

2番目の方法がややこしく、Chocolateyではなく ChocolateyGet を使います。

GitHub - jianyunt/ChocolateyGet: ChocolateyGet provider allows to download packages from Chocolatey.org repository via OneGet

公式よりPackageManagementのChocolateyは現在サポートされていないのでChocolateyGetの使用が推奨されています。

github.com

the prototype is not supported. So your best bet is to use ChocolateyGet for now until the official, supported provider is available.

chocolatey.org

Use ChocolateyGet for now.


例えば次のコマンドを打つと公式のChocolateyのインストールが促されますが、したがってはいけません。ProviderNameのあとのChocolateyは入力補完で候補に出ます。なんという罠…

Find-Package -Name 7zip -ProviderName Chocolatey

>The provider 'chocolatey v2.8.5.130' is not installed.
>chocolatey may be manually downloaded from
>https://onegetcdn.azureedge.net/providers/ChocolateyPrototype-2.8.5.130.exe and
>installed.
>Would you like PackageManagement to automatically download and install 'chocolatey'
>now?
>[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"):

2番目の方法を使う意味はあるのか?

PackageManagement(OneGet)を他の用途にも使っていない限りありません。 PackageManagement自体はだたのラッパーです。

プロバイダーを複数指定して検索する例。
普通は -ProviderName Nuget, ChocolateyGet のように名前で指定しますが、今回はプロバイダーをインストールしていないのでSourceで指定しています。

Find-Package Python3* -Source https://www.nuget.org/api/v2/, https://chocolatey.org/api/v2/

<#
Name             Version          Source                           Summa
                                                                   ry
----             -------          ------                           -----
Python35         3.5.1.1          https://www.nuget.org/api/v2/    Py...
Python36         3.6.0            https://www.nuget.org/api/v2/    Py...
Python37         1.0.0.1          https://www.nuget.org/api/v2/    Py...
Python38         3.8.0            https://www.nuget.org/api/v2/    Py...
python3          3.8.1.20200110   https://chocolatey.org/api/v2/   Py...
python3-x86_32   3.5.2.20170425   https://chocolatey.org/api/v2/   Py...
#>

というように複数のプロバイダ(ホスティングサイト)に対して共通のコマンドを使えるのが利点です。ですがChocolateyのみを使う場合choco.exeを使ったほうが分かりやすいと思います。