Installation von open-vm-tools in Ubuntu über Puppet; Was ist das kleinere Übel?

9

In einer idealen Welt sollte die Konfiguration der Puppe für die Installation open-vm-toolsso einfach sein:

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

Aber das eröffnet eine hässliche Dose des Abhängigkeitsschleichens; es installiert X, das offensichtlich nicht auf Server gehört. Ab Ubuntu 10.04 empfehlen beide Pakete das open-vm-toolboxPaket der GUI-Tools:

# 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

Empfohlene Pakete werden standardmäßig immer installiert. Es ist eindeutig nicht wünschenswert, X-Abhängigkeiten standardmäßig zu installieren, wenn ein Paket installiert wird, das als "CLI-Tools" bezeichnet wird.

Die Feature-Anfrage gegen Debian wurde aus diesem Grund sofort abgelehnt, aber in Ubuntu herrschten keine kühleren Köpfe vor . Es scheint, dass in der letzten Woche erkannt wurde, dass dies eine schlecht beratene Änderung war , aber das hilft nichts, bis die nächste LTS-Veröffentlichung veröffentlicht wird.

Das Verhalten empfohlen , um Pakete zu installieren , mit dem auf die Kommandozeile leicht genug deaktiviert --no-install-recommendsOption, aber durch Puppe gibt es keine Unterstützung , dies zu tun, und eine verwirrte Einander von Karten , dass die Unterstützung anfordert nicht weit in 3 Jahren verschwunden.

Die andere Möglichkeit besteht darin, empfohlene Pakete im gesamten System über zu deaktivieren. Dies apt.confist eine massive Änderung des Paketverhaltens mit Auswirkungen, die weiter reichen als ich möchte.

Ich habe mich damit abgefunden, es faul zu machen;

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

Aber das ist eindeutig "falsch machen" . Vermisse ich etwas, das alles so funktionieren lässt, wie es soll, oder ist dies die beste hackige Problemumgehung für dieses Problem?

Shane Madden
quelle

Antworten:

3

Fehler 1766 zeigte an, dass der aptitude-Anbieter empfohlene Pakete installiert, der apt-Anbieter jedoch nicht.

Wenn dies korrekt ist (ich habe es selbst nicht überprüft), funktioniert Folgendes möglicherweise sauberer:

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

Angepasst an Puppet Type Reference, Abschnitt "Paket" .


Nach weiteren Untersuchungen bearbeiten: Da der apt-Anbieter unter Ubuntu und Debian der Standard ist, verwenden Sie den aptitude-Anbieter für diese Pakete und fügen Sie einen ~/.aptitude/configfür root geeigneten hinzu .

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

Nicht perfekt, aber prägnanter als eine riesige Exec-Linie.

Mike Renfro
quelle
Kein solches Glück; x11-common und alle seine Freunde wurden installiert. Dieser Fehlerbericht scheint zu implizieren, dass ein Argument hinzugefügt werden kann, um das Verhalten mit dem apt-Anbieter zu steuern ... aber ich kann keine Informationen darüber finden, wie das gemacht werden soll. Dieser Fehlerbericht ist möglicherweise veraltet, aber zumindest derzeit scheint der aptAnbieter der Standard für Ubuntu und Debian zu sein (siehe Zeile 13 dieser Datei) .
Shane Madden
Siehe oben bearbeiten.
Mike Renfro