Keine APT Empfiehlt mit Puppe

8

Ich verwende Puppet, um eine Reihe von Debian-Servern bei der Arbeit zu verwalten, auch wenn dies die Installation von Paketen umfasst. Ein Paket, das ich auf mehreren Systemen installiere, ist nmap, mit dem überprüft wird, ob die Firewall-Regeln ordnungsgemäß eingerichtet sind. Wenn Sie unter Debian 7.0 APT :: Install-Recommends aktiviert haben, erhalten Sie zusammen mit nmap eine ganze Menge Mist (siehe unten).

Ich möchte nicht, dass der ganze Mist, der nmap mit aktivierten Empfehlungen installiert, enthalten ist. Eine Lösung wäre, meine passende Konfiguration mit zu aktualisieren APT::Install-Recommends "0";. Aber ich möchte nicht, dass dies die Standardeinstellung ist. Die meiste Zeit möchte ich Empfehlungen enthalten. Die empfohlenen Pakete sind größtenteils in Ordnung und ich bekomme nicht viele Sachen, die ich nicht brauche. Aber es gibt ein paar Pakete, die denken, ich will / brauche nicht.

  package { 'nmap':
    ensure => installed,
    require => Class['apt'],
  }

Gibt es eine Methode, um zu steuern, ob Empfehlungen über Puppet installiert werden, wenn der Paketanbieter 'apt' verwendet wird? Ich möchte nicht mit dem Eignungsanbieter herumspielen, da Eignung und Eignung nicht vollständig miteinander kompatibel sind.

Mit Empfehlungen

root@fw-01:~# apt-get install nmap
Reading package lists... Done
Building dependency tree       
Reading state information... Done
... 
The following NEW packages will be installed:
  fonts-droid fonts-liberation ghostscript gnuplot gnuplot-nox groff gsfonts
  imagemagick imagemagick-common libblas3 libblas3gf libcroco3 libcupsimage2
  libdjvulibre-text libdjvulibre21 libexiv2-12 libgfortran3 libgs9
  libgs9-common libijs-0.35 libilmbase6 libjbig2dec0 liblcms1 liblcms2-2
  liblensfun-data litesting firewall blensfun0 liblinear-tools liblinear1 liblqr-1-0
  libmagickcore5 libmagickcore5-extra libmagickwand5 libnetpbm10 libopenexr6
  libpaper-utils libpaper1 librsvg2-2 librsvg2-common libsvm-tools libwmf0.2-7
  netpbm nmap poppler-data psutils ufraw-batch
0 upgraded, 45 newly installed, 0 to remove and 0 not upgraded.
Need to get 32.0 MB of archives.
After this operation, 93.8 MB of additional disk space will be used.
Do you want to continue [Y/n]? 

Ohne Empfehlungen

root@fw-01:~# apt-get --no-install-recommends install nmap
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libblas3 libblas3gf libgfortran3 liblinear1
Suggested packages:
  liblinear-dev
Recommended packages:
  liblinear-tools
The following NEW packages will be installed:
  libblas3 libblas3gf libgfortran3 liblinear1 nmap
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,405 kB of archives.
After this operation, 17.4 MB of additional disk space will be used.
Do you want to continue [Y/n]?
Zoredache
quelle
Es ist Zeit, sich diese aptKlasse anzuschauen .
Michael Hampton
Verwandte Debian-Fehler: bugs.debian.org/cgi-bin/bugreport.cgi?bug=682062
Zoredache
@MichaelHampton, die apt-Klasse stellt nur sicher, dass APT für die Verwendung meiner internen Repositorys konfiguriert ist. Es ändert nichts an den Empfehlungen.
Zoredache
@ Zoredache Siehe auch: serverfault.com/q/280405 und projects.puppetlabs.com/issues/4113
Shane Madden

Antworten:

9

Dies ist jetzt über die Einstellung "install_options" im Puppet-Pakettyp möglich: http://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options

Zum Beispiel:

package { 'nmap':
  ensure          => installed,
  install_options => ['--no-install-recommends'],
}

Das oben Gesagte stellt sicher, dass die Option "--no-install -empfehlungen" an apt-get übergeben wird, wodurch die empfohlenen Pakete nur für diese Installation übersprungen werden : http://manpages.ubuntu.com/manpages/precise/man8/apt-get .8.html

Tim Donohue
quelle
3

Ich habe bisher die folgenden Lösungen gefunden, aber sie sind nicht ideal.

Warten Sie, bis ein kürzlich hinzugefügter Patch die veröffentlichte Version erreicht hat, und aktualisieren Sie ihn.

  • PRO: Das ist der richtige Weg
  • CON: Ich muss warten oder mein Setup lokal patchen.

Verwenden Sie einfach eine Exec zum Installieren anstelle eines Pakets und verwenden Sie eine Exec.

  • PRO: Einfach zu machen, wenn Sie sich keine Gedanken über die Fehlerprüfung machen.
  • CON: Es dauert eine ziemlich komplexe Befehlszeile, um Installationsfehler zu installieren, nicht automatisch zu aktualisieren und ordnungsgemäß zu behandeln.

Aktualisieren Sie meine passende Konfiguration global und verbringen Sie die Zeit damit, alle fehlenden Inhalte zu finden und meine Manifeste anzupassen, um auch die von mir gewünschten Pakete zu installieren, die nur durch Empfehlung installiert werden.

  • PRO: Meine Manifeste sind spezifischer und spiegeln den Zustand eines Systems genauer wider
  • CON: Das Reparieren meiner Manifeste / Konfigurationen, um diese neue Realität widerzuspiegeln, erfordert nicht triviale Zeit / Mühe.

Legen Sie die Umgebungsvariable APT_CONFIG fest, bevor Sie Puppet ausführen.

  • PRO: Einfach einzustellen, wenn Sie eine von Cron initiierte Puppe verwenden
  • PRO: Ändert das Verhalten bei manueller Verwendung von apt nicht
  • CON: Es ist leicht zu vergessen, es einzustellen, wenn APT zu Testzwecken manuell ausgeführt wird.
  • CON: Sie müssen alle Manifeste reparieren, genau wie wenn Sie die globale Konfiguration aktualisieren.
Zoredache
quelle
2
Wie wäre es , wenn Sie einen benutzerdefinierten Anbieter mit dem apt-Anbieter als übergeordnetem Anbieter schreiben und dort die erforderlichen Flags hinzufügen? Entweder das, oder Sie schreiben ein Manifest für den Puppenmeister, um den Patch-Befehl auszuführen, es sei denn, es gibt Beweise dafür, dass er bereits angewendet wurde.
Mike Renfro
@ MikeRenfro das kommt nicht in Frage, aber ich bin nicht besonders vertraut mit Ruby.
Zoredache