Instalowanie narzędzi open-vm w Ubuntu przez Puppet; jakie jest mniejsze zło?

9

W idealnym świecie konfiguracja kukiełki do instalacji open-vm-toolspowinna być tak prosta:

class vm-tools {
    package { 'open-vm-tools':
        ensure => installed
    }
    package { 'open-vm-dkms':
        ensure => installed
    }
}

Ale to otwiera brzydką puszkę zależności; instaluje X, który oczywiście nie należy do serwerów. Począwszy od Ubuntu 10.04, oba te pakiety ostatecznie polecają open-vm-toolboxpakiet narzędzi 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

Zalecane pakiety są zawsze instalowane domyślnie. Oczywiście nie jest pożądane instalowanie domyślnych zależności X podczas instalowania pakietu opisanego jako „Narzędzia CLI”.

Z tego powodu żądanie funkcji przeciwko Debianowi zostało natychmiast odrzucone, ale fajniejsze głowy nie dominowały w Ubuntu . Wygląda na to, że w ciągu ostatniego tygodnia zauważono, że była to niewłaściwa zmiana , ale nic nie pomoże, dopóki nie pojawi się kolejna wersja LTS.

Zachowanie zainstalowania zalecanych pakietów jest dość łatwo wyłączyć w linii poleceń z --no-install-recommendsopcją, ale poprzez lalek nie ma wsparcia dla tej operacji, a splątane bałagan z biletów z prośbą o wsparcie nie poszły znacznie w ciągu 3 lat.

Inną opcją jest po prostu wyłączenie zalecanych pakietów w całym systemie za pośrednictwem apt.conf, co jest ogromną zmianą w zachowaniu pakietów z wpływami sięgającymi dalej niż chciałbym.

Zrezygnowałem z robienia tego leniwie;

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',
}

Ale to wyraźnie „robi to źle” . Czy brakuje mi czegoś, co sprawiłoby, że wszystko działałoby tak, jak powinno, czy jest to najlepsze hackerskie obejście tego problemu?

Shane Madden
źródło

Odpowiedzi:

3

Błąd 1766 wskazał, że dostawca aptitude instaluje zalecane pakiety, podczas gdy dostawca apt nie.

Jeśli jest to poprawne (nie zweryfikowałem tego osobiście), to następujące działania mogą działać bardziej czysto:

package { [ "open-vm-tools", "open-vm-dkms" ]:
  ensure   => installed,
  provider => apt,
}

Zaadaptowano z opisu rodzaju marionetki, sekcja „pakiet” .


Edytuj po dalszym badaniu: ponieważ dostawca apt jest domyślny w Ubuntu i Debian, użyj dostawcy aptitude dla tych pakietów i dodaj odpowiedni ~/.aptitude/configdla roota.

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";';
}

Nie idealny, ale bardziej zwięzły niż gigantyczna linia wykonawcza.

Mike Renfro
źródło
Nie ma takiego szczęścia; x11-common i wszyscy jego znajomi skończyli. Ten raport o błędach wydaje się sugerować, że istnieje argument, który można dodać, aby kontrolować zachowanie apt apt ... ale nie mogę znaleźć żadnych informacji na temat tego, jak należy to zrobić. Ten raport o błędach może być nieaktualny, ale wydaje się, że przynajmniej obecnie aptdostawca jest domyślnie dla Ubuntu i Debiana, patrz wiersz 13 tego pliku .
Shane Madden
Zobacz edycję powyżej.
Mike Renfro,