这是我的问题。 我想要Varnish 3.0,但是Lucid只有2.1包可用。
因此,使用Chef,我需要制作一个安assembly方,将varnish-cache.org存储库添加到apt源,并安装varnish-3.0软件包。
(我有select从源(右?),但如果我这样做,我不会得到/etc/init.d脚本(右?))。
所以我正在编写一个apt_install.rb配方,这可能会添加存储库:
apt_repository "varnish-3.0" do uri "http://repo.varnish-cache.org/ubuntu/" repo_name "varnish-3.0" distribution "lucid" components ["varnish-3.0"] key "http://repo.varnish-cache.org/debian/GPG-key.txt" deb_src true action :add end
实际上,这在/etc/apt/sources.list.d中添加了一个varnish-3.0-source.list文件,它说:
# Created by the Chef apt_repository LWRP deb http://repo.varnish-cache.org/ubuntu/ lucid main
然后我有
package "varnish" do source "http://repo.varnish-cache.org/ubuntu/" action :install end
继续在我的服务器上安装2.1版本,而不是3.0。
如果我在软件包块中指定了一个“版本”,我会得到“未find版本”。
我在这里错过了什么? 这一定很简单。
我最大的问题是apt烹饪书的旧版本。 即使如此,清漆分布名称有点不寻常。 这是我的configuration:
apt_repository "varnish-3.0" do uri "http://repo.varnish-cache.org/ubuntu/" repo_name "varnish-3.0" distribution "lucid" components ["varnish-3.0"] key "varnish-cache.org.gpg-key.txt" deb_src true action :add end package "varnish" do source "http://repo.varnish-cache.org/ubuntu/" version "3.0.2-1~1lucid1" options "--force-yes" action :install end
存储库密钥作为食谱文件包含在内。
当在现有的Varnish 2.3安装上运行这个配方时,第一个厨师客户端运行失败时,试图处理apt的升级configuration文件对话框。 在我的例子中,第二个厨师客户正确地进行清洁。
我认为OP的方法是正确的。
但是,如果由于某种原因而不能接受,那么你可以做的另一件事就是从源代码创build你自己的.deb包。
就个人而言,我不是使用每个包pipe理者不同口味的Crazy,而是使用Jordan Sissel的FPM 。 FPM使得生成不同风格的包非常容易,并且文档引导您通过具体的例子,例如用例 – 使用“make install”的包 。
(个人注意:这对于Vagrant来说是一个很好的用途。)