注意:此问题适用于巧克力0.9.8及以下版本。后来的版本从PowerShell脚本完全重写为C#应用程序,整个包管理过程得到了很大改进
我已经使用巧克力一段时间了。一开始我很兴奋,但过了一段时间我不确定它是否可用。我最关心的是包更新的正确方式。
例如,我使用Chocolatey安装了Atom编辑器。Atom的新版本发布频率很高,所以我已经更新了这个包好几次了。然后我注意到我以前安装的所有Atom版本仍然存在于Chocolatey的lib
目录中Chocolatey事实上不会更新包;它只是在旧版本的基础上安装一个新版本,无论您使用命令choco update <package>
还是choco update all
都无关紧要。除了最近的一个外,目前还没有办法使用Chocolatey卸载以前安装的软件包。
因此,我想知道使用Chocolatey管理包版本的正确方法是什么。我是否应该手动删除旧版本的包,并希望在Chocolatey的包目录之外没有依赖项?
还是这样做?
choco uninstall <package>
choco install <package>
如果我没有使用Chocolatey安装一个软件包,而是安装了几十个软件包呢?
此外,包的每个版本都在单独的目录中这一事实会导致各种问题(例如this、this或this)。
我认为这不适合实际使用。或者我错过了什么。事实上,我希望我能错过一些东西:)因为Windows上的软件管理多年来一直很痛苦。一团糟。
我想说,Chocolatey更像是一个依赖项管理器,但它应该是一个包管理器。它将自己标榜为"适用于Windows的apt-get
",而apt-get
是一个包管理器。包管理器(如Chocolatey、apt-get
或brew
)和依赖性管理器(例如npm
或bower
)之间有很大的区别。这两种方法中的每一种都适用于不同的目的。谁需要同时使用不同版本的Git、Atom、VLC媒体播放器、Chrome等?
这里和这里也有讨论,但一年来没有任何变化它似乎应该在一个用C#而不是PowerShell编写的新客户端中解决,但它还没有发布(应该在2014年底之前发布)。在那之前,我看不到巧克力有任何附加值。
更新:在choco 0.9.9+(C#编译版本)中,情况不再如此。
你是对的。随着PowerShell版本的更新,巧克力文件夹可能会变得非常疯狂。FWIW,PowerShell版本的巧克力是一个停留太久的实验。从第一年年底开始,我就一直在讨论重写它。同意你所看到的是丑陋的。请放心,新版本不是这样工作的。现在有一些包可以安装多个版本(Ruby和Python),但它们很少。
Chocolatey的早期设计在一定程度上依赖于NuGet.exe,它在包管理方面没有NuGet.Core.dll的所有功能(尽管我在编写C#版本的choco时提交了一些非常迟钝的bug)。
我真的很高兴能发布新版本,但功能奇偶性需要首先到位。它将在发布前或同时进行自由和开放源码。它是将支持专业/业务扩展的版本。对于当前PowerShell版本,我不可能尝试这样做。;)
现在,您可以手动跳转到lib文件夹并删除所有较旧的文件夹。在大多数情况下,巧克力公司甚至不考虑旧版本。它只关注最新版本。它所犯的唯一错误是没有删除旧文件夹(并首先在文件夹上使用版本)。
要更新包,请使用Chocolatey update命令。
很简单:
chocolatey update <package>
或
cup <package>
评论中的更新