Установка 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.

Ubuntu Wiki на VMware Tools

Другие вопросы по тегам