【问题标题】:Proper usage of Chocolatey (package update / version management)Chocolatey的正确使用(包更新/版本管理)
【发布时间】:2015-01-08 08:11:53
【问题描述】:

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

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

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

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

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

choco uninstall <package>
choco install <package>

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

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

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

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

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

【问题讨论】:

    标签: windows nuget package-managers chocolatey package-management


    【解决方案1】:

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

    很简单:

    chocolatey update &lt;package&gt;

    cup &lt;package&gt;

    在 cmets 中更新

    【讨论】:

    • 当然,这就是我要描述的问题。如果您执行其中任何一个命令,Chocolatey 将执行新安装而不是更新。我已经使用 choco update 命令更新了 Atom 编辑器 5 次,并且我在 Chocolateylib 目录中安装了 5 个不同的版本。
    • 这是 Chocolatey 的本地缓存功能。大多数包管理工具,如npmbower 都以相同的方式执行此操作。不幸的是,尚未实现清理缓存功能github.com/chocolatey/chocolatey/issues/595
    • 我想说包管理器(如Chocolateyapt-getbrew)和依赖管理器(如npmbower)之间存在很大差异。 Chocolatey 说它是 Windows 的 apt-get,但实际上它的行为类似于依赖管理器,这对我来说根本没有意义。谁需要同时使用不同版本的 Git、Atom、VLC 等?这两种方法中的每一种都适用于不同的目的。
    • 此外,“本地缓存”实际上并不是一项功能,因为Chocolatey 无法以任何方式使用它。即使您安装了已安装的软件包版本,它也会再次下载它。所以我什至不会称它为“本地缓存”。 Chocolatey 只是可以安装一个包,仅此而已。更新只是一个新的安装。没有包管理器可以这样工作。目前Chotolatey 的唯一好处是它提供了一个软件存储库,所有东西都在一个地方。客户端真的很糟糕,尽管它已经开发了几年。我期待一个用 C# 重写的新客户端。
    • @DawidFerenczy - 缺少一个关键字 - “喜欢” apt-get。 ;)
    【解决方案2】:

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

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

    Chocolatey 的早期设计在某种程度上依赖于 NuGet.exe,它没有 NuGet.Core.dll 在包管理方面的所有相同功能(尽管我已经提交了一些非常迟钝的错误)在编写 C# 版本的 choco 时)。

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

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

    【讨论】:

    • 谢谢。您认为新的 C# 版本何时发布?
    • 顺便说一句,很高兴看到您的 KickStarter campaign 成功了。 888 位支持者 :) 几天前,它看起来不会得到资助。我希望它能将 Chocolatey 推向另一个层次。
    • 现在我们获得了资金,我可以将注意力转移到 C# 版本上,因为准备好它是进入专业/商业版本的第一步。
    • 谢谢,这是我见过的第一个看起来很有前途的 Windows 包管理器的倡议。这些年来我已经看到了一些尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2023-03-19
    • 2017-05-09
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多