Установка open-vm-tools в Ubuntu через Puppet; что меньшее зло?
В идеальном мире настройка кукол для установки 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
пакет инструментов с графическим интерфейсом:
# 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-зависимости по умолчанию при установке пакета, который описывается как "Инструменты CLI".
По этой причине запрос Debian против 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',
}
Но это явно "делает это неправильно". Я что-то упустил, что заставило бы все это работать так, как должно, или это лучший хакерский обходной путь для этой проблемы?
2 ответа
Ошибка 1766 показала, что поставщик aptitude устанавливает рекомендуемые пакеты, а поставщик apt - нет.
Если это правильно (я сам не проверял), то следующее может работать более чисто:
package { [ "open-vm-tools", "open-vm-dkms" ]:
ensure => installed,
provider => apt,
}
Адаптировано из Puppet Type Reference, раздел "пакет".
Отредактируйте после дальнейшего изучения: так как провайдер 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";';
}
Не идеально, но более лаконично, чем гигантская линия exec.
Похоже на 12.04, apt-get install open-vm-tools
больше не устанавливает X.