下载用于离线安装的巧克力包

Nic*_*kin 6 packages chocolatey

我想下载一堆巧克力包,然后将它们安装在另一台 PC 上(互联网连接不好,所以我不能以通常的方式安装它们)。

是的,我可以一个一个下载安装程序,然后连续安装它们。但是有很多包(大约 20 个),我真的非常喜欢 UNIX 的做事方式。

那么,有没有办法用巧克力来做这样的把戏?

UPD:可能有一种方法可以通过使用自定义Packages.config来实现这一点,我在其中明确更改了source。但是,它需要一个 URL 而不是本地路径。运行一个一次性使用的服务器对于这项任务来说太过分了。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="chocolateytestpackage" version="0.1" source="somelocation" />
</packages>
Run Code Online (Sandbox Code Playgroud)

我使用 Homebrew 的经验告诉我,如果 Chocolatey 存储下载的软件包,我可以手动从一台 PC 上的存储路径中取出它们,然后放到另一台 PC 上的路径中。将进一步研究它。

fer*_*der 5

首先让我们解决一个误解。

来源不需要 URL

来源可以是以下格式之一:

  • HTTP/HTTPS OData 馈送
  • 本地目录
  • CIFS 共享/UNC 共享

有关更多信息,请参阅https://github.com/chocolatey/choco/wiki/How-To-Host-Feed#local-folder--unc-share-cifs

离线缓存

我们已经根据/sf/answers/1301732141/上的内容更新了这个问题

我们称这个过程为内化。您可以手动执行此操作或查看 Chocolatey for Business 来执行此操作。

通常,社区包存储库上的包维护者没有实际软件二进制文件的分发权限,因此包需要指令来下载这些资源并对其进行操作。在内部使用 Chocolatey 时,这不是限制。

缓存下载 - 不确定

虽然有一些方法可以设置原始 nupkg(带有版本,而不是包目录中的版本 - 使用Chocolatey 社区包存储库上包页面左侧的下载)并将下载的二进制文件预设到缓存文件夹中,它是并不总是确定它会起作用。您还可以覆盖缓存位置,以便文件夹不在 TEMP 中。请参阅choco configchoco config -hchoco config set cacheLocation c:\some\location执行此操作。

注意:缓存将仅支持相同的架构,因为您无法从 x64 机器获取结果并期望缓存也下载 32 位安装程序。

创建自己的包 - 更好

对于离线需要的包,您可以管理自己的包,并且可以将软件直接嵌入到包中。当您想要离线管理软件时,这是需要的,因为社区存储库上的大多数内容都受版权法和分发权的约束(为什么他们不简单地嵌入它们代表的软件)。

创建和使用您自己的包是非常安全的,但它确实会占用时间。如果您是为自己做这件事,那么它可能会覆盖您作为消费者使用 Chocolatey 和社区存储库所节省的任何时间。

对于组织,我们开发了 Package Builder,它可以在 5-10 秒内创建完整的软件部署(包)。它还可以在 60 秒内从现有安装的软件(程序和功能)中创建包!阅读有关包生成器的更多信息。

内化包 - 最佳

您在这里可以做的最好的事情是一个称为内部化的过程,您可以在其中下载并解压缩包,下载所有资源并将它们嵌入到包中(或将它们放在本地某个地方),编辑脚本以使用这些嵌入/本地资源并重新编译包。

这使您可以利用现有的包逻辑而不会出现互联网问题。

有关更多详细信息,请参阅手动内部化包包内部化器 - 自动内部化包

巧克力的组织使用

大多数使用 Chocolatey 的组织都在做一些创建包和内部化包的组合,因为在生产场景中使用时,他们需要对这些包的绝对信任和控制。