我想下载一堆巧克力包,然后将它们安装在另一台电脑上(该电脑的网络连接不好,所以我无法以通常的方式安装它们)。
是的,我可以逐个下载安装程序,然后连续安装它们。但是软件包相当多(大约 20 个),我真的非常喜欢 UNIX 的安装方式。
那么,有没有办法用巧克力来实现这样的效果呢?
UPD:也许有一种方法可以通过使用自定义包.config,我明确地改变了来源。但是,它需要一个 URL 而不是本地路径。运行一个仅供单一用途的服务器对于此任务来说有点小题大做。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="chocolateytestpackage" version="0.1" source="somelocation" />
</packages>
我使用 Homebrew 的经验告诉我,如果 Chocolatey 存储了下载的软件包,我只需手动将它们从一台 PC 上的存储路径中取出,然后放到另一台 PC 上的该路径中即可。我会进一步研究。
答案1
首先让我们来澄清一个误解。
来源不需要 URL
来源可以是下列格式之一:
- HTTP/HTTPS OData 源
- 本地目录
- CIFS 共享 / UNC 共享
看https://github.com/chocolatey/choco/wiki/How-To-Host-Feed#local-folder--unc-share-cifs了解更多信息。
脱机缓存
我们根据以下内容更新了此问题:https://stackoverflow.com/a/18596173/18475
我们称此过程为内部化。您可以手动执行此操作,也可以使用 Chocolatey for Business 执行此操作。
通常,社区软件包存储库中的软件包维护者没有实际软件二进制文件的分发权,因此软件包需要指示去下载这些资源并对其采取行动。在内部使用 Chocolatey 时,这不是一个限制。
缓存下载——非确定性
虽然有办法设置原始 nupkg(带有版本号,而不是软件包目录中的版本号 - 使用Chocolatey 社区软件包存储库) 并将下载的二进制文件预设到缓存文件夹中,但并不总是能确定它会起作用。您还可以覆盖缓存位置,以便文件夹不在 TEMP 中。请参阅choco config
和choco config -h
以choco config set cacheLocation c:\some\location
执行此操作。
笔记:缓存仅支持相同的架构,因为您无法从 x64 机器获取结果并期望缓存也下载了 32 位安装程序。
创建自己的包 - 更好
对于您需要离线使用的软件包,您可以管理自己的软件包,并且可以将软件直接嵌入到软件包中。当您想要离线管理软件时,这是理想的选择,因为社区存储库中的大多数内容都受版权法和分发权的约束(为什么他们不简单地嵌入它们所代表的软件)。
创建和使用自己的软件包非常安全,但往往会耗费时间。如果您是为自己这样做,那么它可能会抵消您作为消费者使用 Chocolatey 和社区存储库所节省的时间。
对于组织,我们开发了 Package Builder,它可以在 5-10 秒内创建完整的软件部署(包)。它还可以在 60 秒内直接从现有安装的软件(程序和功能)创建包!阅读更多关于程序包生成器。
内部化包 - 最佳
您在这里可以做的最好的事情是一个称为内部化的过程,您在其中下载并提取包,下载所有资源并将它们嵌入到包中(或将它们放在本地某个地方),编辑脚本以使用这些嵌入/本地资源并重新编译包。
这使得您可以利用现有的包逻辑,而不受互联网问题的影响。
有关详细信息,请参阅手动内部化包和包内部化器 - 自动内部化包。
Chocolatey 的组织使用
大多数使用 Chocolatey 的组织都在进行创建包和内化包的某种组合,因为他们需要在生产场景中使用时对这些包进行绝对的信任和控制。