这是我的问题。我想要 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 版本。
如果我在包块中指定“版本”,则会收到“未找到版本”的信息。
我在这里遗漏了什么? 一定是一些简单的东西。
答案1
我最大的问题是 apt cookbook 的版本太旧了。即便如此,Varnish 发行版的名称还是有点不寻常。这是我的配置:
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 安装上运行此配方时,第一次 chef-client 运行在尝试处理 apt 升级的配置文件对话框时失败。在我的例子中,第二次 chef-client 运行干净且正确。
答案2
我认为楼主回答的方法是正确的。
然而,如果由于某种原因这是不可接受的,您可以做的另一件事是从源代码创建自己的 .deb 包。
就我个人而言,我不会使用每个包管理器的不同版本的 Crazy,而是使用Jordan Sissel 的 FPM。FPM 使制作不同风格的软件包变得非常容易,文档将引导您完成具体的示例,例如用例 - 使用“make install”进行打包。
(个人说明:这是流浪汉。