我们已经分开使用Chef和Chocolatey已有一段时间了,最近开始一起使用它们来轻松安装一些Windows软件包。
例如:
include_recipe 'chocolatey::default'
chocolatey_package 'git.install' do
action :install
end
chocolatey_package 'nuget.commandline' do
action :install
end
chocolatey_package 'docker-compose' do
action :install
version '1.21.2'
end
chocolatey_package 'gitlab-runner' do
action :install
version '11.0.0'
end
该配方有效,但现在我们在没有任何其他更改的情况下得到了这些错误:
* chocolatey_package[git.install] action install
- install version 2.18.0 of package git.install
* chocolatey_package[nuget.commandline] action install
- install version 4.8.1 of package nuget.commandline
* chocolatey_package[docker-compose] action install
- install version 1.21.2 of package docker-compose
* chocolatey_package[gitlab-runner] action install
* No candidate version available for gitlab-runner
================================================================================
Error executing action `install` on resource 'chocolatey_package[gitlab-runner]'
================================================================================
Chef::Exceptions::Package
-------------------------
No candidate version available for gitlab-runner
注意安装成功,然后失败。
最初发生在git
程序包中,出于无奈,我将其更改为git.install
,它可以正常工作。但是现在它刚开始与gitlab-runner
一起发生。
有没有人看到这种类型的故障在一天而不是第二天起作用?我已经确认该软件包存在,并且可以使用choco install
手动将其拉低。
我的下一个故障排除步骤可能是挖掘该资源;我知道在Linux平台上安装软件包时可能会发生错误消息,因此错误描述可能会引起误解……即chocolatey_package
抛出异常,或者处理程序的捕获过于笼统(使用.NET术语) 。
这是我所面临的最烦人的问题之一。 Chocolatey.org确实非常不可靠。但是,我可以在发生此错误后立即直接在命令行上进行安装,但是通过Chocolatey_package厨师资源,无论是否Chocolatey.org处于何种状态,它每次都会因令人恐惧的“没有可用的候选版本”而失败。希望厨师最终能一起行动。同时,这是一种对我有效的解决方法。
choco source add -n=local -s"[PATH]" -u=[USERNAME] -p=[PASSWORD]
然后转到Chocolatey.org,找到您的软件包,将其下载到该位置,然后重新运行您的食谱。这非常有效,因为您不再那么依赖外部资源,而且速度更快,但是请记住,当发布新软件包时,您很有可能需要使用最新软件包进行刷新。