2

注意:此问题适用于 Chocolatey 0.9.8 及以下版本。后来的版本完全从 PowerShell 脚本重写为 C# 应用程序,并且包管理的整个过程得到了很大改进。

我已经使用Chocolatey一段时间了。一开始我很兴奋,但过了一段时间我不确定它是否可以使用。我最关心包更新的正确方式。

例如,我使用Chocolatey安装了Atom编辑器Atom的新版本发布非常频繁,所以我已经多次更新这个包。然后我注意到我之前安装的所有Atom版本仍然存在于Chocolatey的目录中。Chocolatey实际上并没有更新包。它只是安装旧版本之外的新版本,使用命令或. 目前也没有办法使用Chocolatey卸载以前安装的包,除了最新的包。libchoco update <package>choco update all

因此,我想知道使用Chocolatey管理包版本的正确方法是什么我是否应该手动删除旧版本的包并希望Chocolatey的包目录之外没有依赖项?

或者更确切地说是这样做?

choco uninstall <package>
choco install <package>

如果我没有使用Chocolatey安装一个包,而是安装了数十个包怎么办?

此外,每个版本的包都位于单独的目录中这一事实会导致各种问题(例如thisthisthis)。

我认为这不适合实际使用。或者,也许我错过了一些东西。实际上,我希望我遗漏了一些东西 :) 因为 Windows 上的软件管理多年来一直很痛苦。一团糟。

我会说Chocolatey更像是一个依赖管理器,但它应该是一个包管理器。它标榜自己为“ apt-getfor Windows”并且apt-get是一个包管理器。包管理器(如Chocolatey或)和依赖管理器(如apt-getor )之间存在很大差异。这两种方法中的每一种都适用于不同的目的。谁需要同时使用不同版本的 Git、Atom、VLC 媒体播放器、Chrome 等?brewnpmbower

例如,这里这里也讨论了它,但一年中没有任何变化。似乎应该在用 C# 而不是 PowerShell 编写的新客户端中解决它,但它还没有发布(应该在 2014 年底之前发布)。在那之前,我看不到Chocolatey的任何附加值。

4

2 回答 2

7

更新:在 choco 0.9.9+(C# 编译版本)中不再是这种情况。

你是对的。随着 PowerShell 版本的不断更新,Chocolatey 文件夹会变得非常疯狂。FWIW,Chocolatey 的 PowerShell 版本是一个已经存在太久的实验。从第一年年底开始,我一直在谈论重写它。同意你所看到的很丑陋。请放心,这不是新版本的工作方式。现在有一些软件包可以安装多个版本(Ruby 和 Python),但它们很少而且相差甚远。

Chocolatey 的早期设计在某种程度上依赖于 NuGet.exe,它没有 NuGet.Core.dll 在包管理方面的所有相同功能(尽管它有一些我在编写C# 版本的巧克力)。

我很高兴能发布新版本,但首先需要具备同等功能。它将在发布之前或同时进行 FOSSed。它是支持专业/商业扩展的版本。我无法尝试使用当前的 PowerShell 版本来做到这一点。;)

现在您可以手动跳转到 lib 文件夹并删除所有旧文件夹。在大多数情况下,Chocolatey 甚至不考虑旧版本。它只查看最新版本。它所犯的唯一错误是没有删除较旧的文件夹(并首先在文件夹上使用版本)。

于 2014-11-12T04:24:45.940 回答
1

要更新包,请使用Chocolatey 更新命令。

这很简单:

chocolatey update <package>

或者

cup <package>

更新评论

于 2014-11-11T17:50:13.510 回答