Назад | Перейти на главную страницу

Шеф-повар устанавливает локальный пакет apt_package с зависимостями

Я пытаюсь установить локально запеченный пакет на сервере:

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). У меня ошибка (отсутствуют данные):

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 не может устанавливать зависимости, поэтому вам необходимо создать локальный репозиторий 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

параметры

Тип Рубина: Строка

Одна (или несколько) дополнительных опций, передаваемых команде.