Installazione di open-vm-tools in Ubuntu tramite Puppet; qual è il male minore?


9

In un mondo ideale, la configurazione di Puppet per l'installazione di open-vm-toolsdovrebbe essere semplice come questa:

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

Ma questo apre una brutta lattina di dipendenza che si insinua; installa X, che ovviamente non appartiene ai server. A partire da Ubuntu 10.04, entrambi i pacchetti finiscono per raccomandare il open-vm-toolboxpacchetto di strumenti della 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

I pacchetti consigliati sono sempre installati per impostazione predefinita. Chiaramente non è desiderabile installare le dipendenze X per impostazione predefinita quando si installa un pacchetto che è descritto come "Strumenti CLI".

La richiesta di funzionalità contro Debian stata immediatamente respinta per questo motivo, ma le teste più fredde non hanno prevalso in Ubuntu . Sembra che nell'ultima settimana sia stato riconosciuto che si è trattato di un cambiamento sconsiderato , ma non è di alcun aiuto fino a quando non verrà lanciata la prossima versione di LTS.

Il comportamento di installare i pacchetti consigliati è abbastanza facilmente disabilitato sulla riga di comando con l' --no-install-recommendsopzione, ma tramite Puppet non c'è supporto per farlo e un aggrovigliato pasticcio di biglietti che chiedono che il sostegno non essere andato lontano in 3 anni.

L'altra opzione è semplicemente disabilitare i pacchetti raccomandati in tutto il sistema tramite apt.conf, il che è un enorme cambiamento nel comportamento dei pacchetti con impatti che vanno oltre quanto mi piacerebbe.

Mi sono rassegnato a farlo nel modo pigro;

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

Ma questo è chiaramente "sbagliare" . Mi sto perdendo qualcosa che farebbe funzionare tutto nel modo in cui dovrebbe, o è forse la migliore soluzione alternativa a questo problema?

Risposte:


3

Bug 1766 indicava che il provider aptitude installa i pacchetti consigliati, mentre il provider apt no.

Se è corretto (non l'ho verificato da solo), i seguenti potrebbero funzionare in modo più pulito:

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

Adattato dal riferimento al tipo di pupazzo, sezione "pacchetto" .


Modifica dopo ulteriori indagini: poiché il provider apt è il predefinito su Ubuntu e Debian, usa il provider aptitude per questi pacchetti e aggiungi un adatto ~/.aptitude/configper root.

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

Non perfetto, ma più conciso di una gigantesca linea esecutiva.


Non molta fortuna; x11-common e tutti i suoi amici sono stati installati. Quella segnalazione di bug sembra implicare che esiste un argomento che può essere aggiunto per controllare il comportamento con il provider apt ... ma non riesco a trovare alcuna informazione su come dovrebbe essere fatto. Quella segnalazione di bug potrebbe essere obsoleta, ma, almeno al momento, il aptprovider è in realtà il predefinito per Ubuntu e Debian, vedere la riga 13 di questo file .
Shane Madden,

Vedi modifica sopra.
Mike Renfro,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.