我尝试在服务器上安装我的本地烘焙软件包:
cookbook_file '/var/cache/apt/archives/nfdhcpd_0.20_all.deb' do source 'nfdhcpd_0.20_all.deb' owner 'root' group 'root' mode '0755' action :create end package 'nfdhcpd_0.20_all.deb' do provider Chef::Provider::Package::Dpkg source "/var/cache/apt/archives/nfdhcpd_0.20_all.deb" action :install end
我需要使用dpkg provider因为apt provider不支持本地程序包( apt package provider cannot handle source attribute. Use dpkg provider instead )。 我有一个错误(错过了deps):
STDERR: dpkg: dependency problems prevent configuration of nfdhcpd: nfdhcpd depends on python-scapy (>= 2.0.1-1); however: Package python-scapy is not installed.
我如何告诉厨师安装缺失的依赖关系? (无需手动安装)
dpkg不能安装依赖关系,所以你需要创build一个包含你的包的本地apt库。 https://askubuntu.com/a/176546给出了基本的想法。 您需要将一个Packages文件与.deb一起放入,然后在/etc/apt/sources.list.d文件中引用该目录。
file '/etc/apt/sources.list.d/local-apt.list' do owner 'root' group 'root' mode '0644' content "deb file:/var/cache/apt/archives/ ./" action :create notifies :run, 'execute[apt-get update]', :immediately end package 'nfdhcpd'
怎么通过-f作为一个选项?
用选项安装一个软件包
package 'debian-archive-keyring' do action :install options '--force-yes' end
apt_package
apt_package 'name' do default_release String notifies # see description options String package_name String, Array # defaults to 'name' if not specified provider Chef::Provider::Package::Apt source String subscribes # see description timeout String, Integer version String, Array action Symbol # defaults to :install if not specified end
dpkg_package
dpkg_package 'name' do notifies # see description options String package_name String, Array # defaults to 'name' if not specified provider Chef::Provider::Package::Dpkg source String subscribes # see description timeout String, Integer version String, Array action Symbol # defaults to :install if not specified end选项
Rubytypes:string
传递给命令的一个(或多个)附加选项。