我需要验证在使用capistrano部署后安装了OS软件包(它是一个rails项目,如果它很重要)。我想支持主要的Linux发行版和OS X.幸运的是,包的名称在所有平台上都是一样的。
我想过添加一个capistrano任务,比如(未经测试的代码):
%w(yum apt-get brew).each do |manager|
path = `which #{manager}`.chomp
if path && path.size > 0
`#{path} install -y #{PKG}`
return
end
end
受this question的启发。
有更好的方法吗?
我考虑过检查uname
,但它并不总是有发行版,只是" Linux"。我还想过在lsb_release
中使用/etc/*-release
或列出文件,但并非所有发行版都支持它(例如centos)。