Chocolatey 从哪里找到包裹

Chocolatey from where does it find the package

chocolatey 从哪里找到要下载的包?例如,如果我正在安装 VirtualBox 那么它从哪里找到要下载的最新软件包,它是否有可能下载过时的版本?

软件包按来源找到

Chocolatey 使用您提供的资源来确定包裹的位置。如果您不提供来源(或来源列表),它将使用默认来源,您可以通过 运行 choco source list 查看。您可以添加或删除源(例如社区包存储库又名 https://chocolatey.org/api/v2)。

每个来源都可以有一个优先级,它定义了 Chocolatey 搜索来源以查找包的顺序。如果在优先级较高的源上找到软件包,则使用该软件包版本 even 如果在另一个优先级较低的源上有较新的版本。

软件包与软件

Chocolatey 语言中的软件包与软件的术语略有不同。

  • 包 == nupkg 文件
  • 软件包代表的软件 == 运行时二进制文件、安装程序、zip 等

有关更多术语,请查看 https://chocolatey.org/docs/getting-started#terminology

VirtualBox 示例

让我们以 VirtualBox 包为例开始...

很可能您会发现您没有配置任何其他来源(根据您的问题),因此这意味着您可能只有默认的社区包存储库用于包源。

看这里:

https://chocolatey.org/packages/virtualbox#files

这向您展示了 VirtualBox 的 Chocolatey 包的内容。如果您通读了 chocolateyInstall.ps1 文件,您将确切地看到这个包的二进制文件是从哪里下载的:

url = 'http://download.virtualbox.org/virtualbox/5.1.12/VirtualBox-5.1.12-112440-Win.exe'

url64bit = 'http://download.virtualbox.org/virtualbox/5.1.12/VirtualBox-5.1.12-112440-Win.exe' checksum = '0cbdc245122fab090625bb3ec49f21f68c9bbad7d69e05e4a42b1a6ad1968b54' checksum64 = '0cbdc245122fab090625bb3ec49f21f68c9bbad7d69e05e4a42b1a6ad1968b54'

您可以查看每个 Chocolatey 软件包的文件部分,找出安装文件的来源。假设你没有通过 Chocolatey 特性开启包安装的全局接受,其实你也可以在安装时查看安装脚本。即,当您执行 choco install virtualbox 时,系统会提示您选择 3 个选项,yesnoprint。在这种情况下,print 将向您显示安装脚本,您可以看到将要 downloaded/installed 到您的计算机上的内容。

以上情况唯一不同的情况是,如果您正在安装的软件包是我们所说的 embedded 软件包(这更适合组织使用,因为它们托管内部软件包和不受像 public 社区存储库那样的分发权的约束)。在嵌入式情况下,安装二进制文件已包含在 chocolatey 包中,因此不需要下载其他文件。在使用嵌入式包时,我建议您查看应该包含在社区存储库的 Chocolatey 包中的 VERIFICATION.txt,以查看有关嵌入式二进制文件来源的说明,以及验证内容是否正确的机制是他们应该的。

版本过时?

关于你的另一个问题:

is there any chance that it might download an outdated version?

对于 VirtualBox,这是极不可能的。如果您从 Chocolatey.org 上的包页面单击包源 link,您将看到您被带到这个 location. This package is part of the Core Team Packages Repository. This repository is making use of the AU Chocolatey 自动包更新程序模块。因此,这个存储库中的包会定期(目前每 6 小时)检查是否有新的软件版本,如果有,它们将自动推送到 Chocolatey.org。此存储库中的软件包由一组志愿者(包括我自己)维护,因此此处的软件包很有可能会保持最新。

然而...

对于 Chocolatey.org 的社区包存储库中存在的所有包来说,这并不相同。社区存储库是一项社区工作,拥有近 4500 个包,我相信您可以理解,有些包可能不是最新的。这些应该根据具体情况进行评估,以确保这符合您的要求。

我要说的最后一件事是,如果最新的软件包是您的核心关注点,那么您始终可以选择不使用社区存储库。由于这是一天结束时的社区提要,因此它不是 Chocolatey 中的 recommended for internal/production usage for organizations. Instead, you would want to look at pulling these packages internally within your own environment. This can be done either manually or by utilising the business 个选项。