What's the difference between Chocolatey, OneGet, PsGet, NuGet, ...?

Paebbels picture Paebbels · Jun 15, 2016 · Viewed 13.7k times · Source

I know there are many package sources for PowerShell extensions. I'm seeking for a comprehensive answer, how:

  • Chocolatey
  • NuGet
  • PsGet
  • PowerShellGallery
  • OneGet
  • MyGet
  • ProGet
  • ...

all these fit together into one big picture. Please denote discontinued or subsumed versions.

According to this post: Difference between Chocolatey and NuGet NuGet is only integrated in VisualStudio and meant for .NET libraries.

Answer

Harald F. picture Harald F. · Jun 15, 2016

OneGet has been renamed to Package management. Its core provides you with discovery and installation/uninstallation of various packages. OneGet is often referred to as a "package manager manager".

OneGet is a part of WMF 5 installation. Think of this as the "central concept" in the big picture. Now let's talk about packages.

Packages are fetched through package providers. E.g. PowerShellGet is one package provider for OneGet. Powershell gallery is a package source of of PowershellGet (PSGet). A provider can have multiple sources where it can search for its packages.

E.g for the nuget-package provider; you can easily add the sources to the public nuget gallery and register your own e.g. myget source so it can be used when searching for packages.

Chocolatey is just another example of a package provider. Earlier it had to be installed and was a seperate module with its own logic. The new Chocolatey provider conforms to the new framework of installing / managing packages.

So on a more conceptual level; a package provider itself contains information on how to install and search its sources (sources can be registered/unregistered for each and every provider); whilst OneGet (Package management, package manager manager) works on the level above, managing package providers and interfacing this all for you.

OneGet glues it all together; while the providers itself knows how to handle packages based on its registered sources.

Hope this explains it on the conceptual level.

See also this nice blogpost here explaining a few things more in detail: 10 things about OneGet that are completely different than you think.

If you want to play around with package providers and sources :

 Get-PackageProvider # -Shows package providers installed on your machine)
 Find-PackageProvider # -Find online package providers you can pull down and install)
 Get-PackageSource # -List all package sources, with its provider name)
 Register-PackageSource # -Register new package source for a provider)

These are just some examples. Get a more extensive list by invoking the following command:

Get-Command -Module PackageManagement