能否将配置Chocolatey+Artifactory的机器设为离线机器的源?
当然可以实现这个需求!
你的场景完全可行——让Machine A同时作为自身的Artifactory源消费者,以及Machine B的Chocolatey软件源代理。下面是具体的实现步骤,都是基于Chocolatey原生功能和Windows基础配置来做的:
核心逻辑说明
Machine A会先从Artifactory拉取并缓存软件包,然后把这个缓存目录共享给Machine B;Machine B则将Machine A的共享目录作为自己唯一的Chocolatey源,这样就能实现无网络环境下的包安装。同时Machine A自身依然保留Artifactory作为源,随时可以拉取新包补充缓存。
步骤1:在Machine A上配置包缓存并保留Artifactory源
首先确保Machine A已经正确配置了Artifactory作为Chocolatey源(你已经完成这一步了),接下来我们要让Chocolatey把下载的包持久化缓存,方便共享给Machine B:
- 打开PowerShell(管理员权限),查看当前Chocolatey缓存目录:
默认路径一般是choco config get cacheLocationC:\ProgramData\chocolatey\cache,如果需要修改可以用:choco config set cacheLocation "D:\ChocoCache" # 换成你想存的路径 - 验证Artifactory源是否正常:
确保Artifactory源是启用状态,如果没有的话重新添加(需要认证的话补充账号密码):choco source listchoco source add -n=Artifactory -s="你的Artifactory源URL" -u="用户名" -p="密码"
步骤2:把Machine A的缓存目录共享给Machine B
有两种常用的共享方式,选一种适合你的:
方式1:Windows文件共享
- 找到缓存目录(比如
C:\ProgramData\chocolatey\cache),右键选择「属性」→「共享」→「高级共享」 - 勾选「共享此文件夹」,设置共享名(比如
ChocoCache) - 点击「权限」,添加Machine B的用户账号,赋予「读取」权限
- 测试共享:在Machine B的文件管理器输入
\\MachineA的IP\ChocoCache,确认能看到里面的.nupkg文件
方式2:HTTP服务(更适合跨网段或权限复杂的场景)
如果文件共享有问题,可以在Machine A上搭建一个简单的HTTP服务器来暴露缓存目录:
- 打开PowerShell(管理员权限),进入缓存目录:
cd C:\ProgramData\chocolatey\cache - 用Python启动简单HTTP服务器(如果没装Python,可以用IIS或者其他轻量HTTP服务):
python -m http.server 8080 - 在Machine B上测试访问:打开浏览器输入
http://MachineA的IP:8080,确认能看到包文件列表
步骤3:在Machine B上配置Chocolatey源指向Machine A
- 在Machine B上打开PowerShell(管理员权限),先移除默认的Chocolatey源(避免无网络时报错):
choco source remove -n=chocolatey - 添加Machine A的共享目录作为新源:
- 如果用文件共享:
choco source add -n=MachineA-Choco -s="\\MachineA的IP\ChocoCache" - 如果用HTTP服务:
choco source add -n=MachineA-Choco -s="http://MachineA的IP:8080"
- 如果用文件共享:
- 验证源配置:
choco source list - 测试安装:尝试安装packageA或packageB,确认能从Machine A获取包并安装成功:
choco install packageA -y
额外注意事项
- 当需要给Machine B新增软件包时,先在Machine A上执行
choco install 新包名,让它从Artifactory拉取并缓存到共享目录,然后Machine B就能安装了 - 如果Artifactory源需要认证,Machine A的Choco配置已经保存了认证信息,不需要在Machine B上重复配置
- 定期清理缓存目录里的旧包,避免占用过多磁盘空间
内容的提问来源于stack exchange,提问作者Squirrel




