В идеальном мире настройка марионетки для установки open-vm-tools
должно быть так просто:
class vm-tools {
package { 'open-vm-tools':
ensure => installed
}
package { 'open-vm-dkms':
ensure => installed
}
}
Но это открывает уродливую банку ползучей зависимости; он устанавливает X, который явно не принадлежит серверам. Начиная с Ubuntu 10.04, оба этих пакета рекомендуют open-vm-toolbox
пакет инструментов GUI:
# apt-cache depends open-vm-dkms
open-vm-dkms
Depends: dkms
Depends: make
Suggests: open-vm-toolbox
Recommends: open-vm-tools
# apt-cache depends open-vm-tools
open-vm-tools
Depends: libc6
Depends: libfuse2
Depends: libgcc1
Depends: libglib2.0-0
Depends: libicu44
Depends: libstdc++6
Recommends: open-vm-source
Recommends: open-vm-toolbox
Recommends: ethtool
Recommends: zerofree
Рекомендуемые пакеты всегда устанавливаются по умолчанию. Ясно, что нежелательно устанавливать зависимости X по умолчанию при установке пакета, который описывается как «Инструменты командной строки».
В запрос функции против Debian был немедленно отклонен по этой причине, но холодные головы не преобладали в Ubuntu. Кажется, что за последнюю неделю признание того, что это было опрометчивым изменением, но это не поможет, пока не выйдет следующий выпуск LTS.
Поведение для установки рекомендуемых пакетов достаточно легко отключить в командной строке с помощью --no-install-recommends
вариант, но через марионетку это не поддерживается, и запутанный беспорядок из Билеты просьба о поддержке не ушла далеко за 3 года.
Другой вариант - просто отключить рекомендуемые пакеты во всей системе с помощью apt.conf
, что является серьезным изменением поведения пакета с более значительными последствиями, чем хотелось бы.
Я смирился с тем, что буду делать это ленивым способом;
exec { 'open-vm-tools install':
command => '/usr/bin/apt-get install -y --no-install-recommends open-vm-dkms open-vm-tools',
creates => '/usr/lib/open-vm-tools',
}
Но это явно "делать неправильно". Мне не хватает чего-то, что могло бы заставить все это работать так, как должно, или это лучший хакерский обходной путь к этой проблеме?
Похоже на 12.04, apt-get install open-vm-tools
больше не устанавливает X.
Ошибка 1766 указал, что провайдер aptitude устанавливает рекомендуемые пакеты, а провайдер apt - нет.
Если это правильно (я не проверял это сам), тогда может работать более чисто следующее:
package { [ "open-vm-tools", "open-vm-dkms" ]:
ensure => installed,
provider => apt,
}
Адаптировано из Справочник по типу марионетки, раздел «пакет».
Отредактируйте после дальнейшего исследования: поскольку провайдер apt используется по умолчанию в Ubuntu и Debian, используйте провайдер aptitude для этих пакетов и добавьте подходящий ~/.aptitude/config
для рута.
package { [ "open-vm-tools", "open-vm-dkms" ]:
ensure => installed,
provider => aptitude,
require => File["/root/.aptitude/config"];
}
file { "/root/.aptitude/config":
ensure => present,
content => 'APT::Install-Recommends "0";';
}
Не идеально, но более лаконично, чем гигантская строчка.