这是我的问题。我想要 Varnish 3.0,但 Lucid 只有 2.1 包可用。
因此,使用 Chef,我需要制作一个安装配方,将 varnish-cache.org 存储库添加到 apt 源并安装 varnish-3.0 包。
(我可以选择从源代码构建它(对吗?),但如果这样做,我将得不到 /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。
如果我在包块中指定一个“版本”,我会得到“找不到版本”。
我在这里错过了什么?它必须是简单的东西。
我最大的问题是 apt 食谱的旧版本。即便如此,Varnish 发行版名称还是有点不寻常。这是我的配置:
存储库密钥作为说明书文件包含在内。
当在现有的 Varnish 2.3 安装之上运行此配方时,第一次 chef-client 运行在尝试处理 apt 的升级配置文件对话框时失败。在我的例子中,第二个 chef-client 运行清洁并正确。
我认为OP回答的方法是正确的方法。
但是,如果由于某种原因不能接受,您可以做的另一件事是从源代码创建您自己的 .deb 包。
就个人而言,我没有使用每个包管理器的不同风格的 Crazy,而是使用Jordan Sissel 的 FPM。FPM 使制作不同风格的包变得非常简单,文档将引导您完成具体示例,例如用例 - 打包使用“make install”的东西。
(个人注意:这是Vagrant的绝佳用途。)