Tidak Ada APT Merekomendasikan dengan boneka

8

Saya menggunakan boneka untuk mengelola sekelompok server Debian di tempat kerja, sebagian jika itu termasuk menginstal paket. Satu paket yang saya instal pada beberapa sistem adalah nmap yang digunakan untuk memverifikasi bahwa aturan firewall sudah diatur dengan benar. Pada Debian 7.0, jika Anda mengaktifkan APT :: Install-Recommends, Anda akan mendapatkan banyak omong kosong bersama dengan nmap (lihat di bawah).

Saya tidak ingin semua omong kosong yang menginstal nmap dengan rekomendasi diaktifkan disertakan. Salah satu solusinya adalah memperbarui konfigurasi apt saya dengan APT::Install-Recommends "0";. Tapi saya tidak ingin ini menjadi default. Sebagian besar waktu saya ingin merekomendasikan disertakan. Paket yang disarankan sebagian besar baik-baik saja, dan saya tidak mendapatkan banyak barang yang tidak saya butuhkan. Tetapi ada beberapa paket yang membawa berpikir saya tidak mau / butuhkan.

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

Apakah ada metode untuk mengontrol jika rekomendasi diinstal melalui boneka ketika menggunakan penyedia paket 'apt'? Saya tidak ingin dipusingkan dengan penyedia aptitude karena apt dan aptitude tidak sepenuhnya kompatibel satu sama lain.

Dengan Merekomendasikan

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]? 

Tanpa Rekomendasi

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]?
Sakit kepala
sumber
Sudah waktunya untuk melihat aptkelas itu.
Michael Hampton
Bug Debian terkait: bugs.debian.org/cgi-bin/bugreport.cgi?bug=682062
Zoredache
@MichaelHampton, kelas apt justs memastikan bahwa APT dikonfigurasi untuk menggunakan repositori internal saya. Itu tidak mengubah apa pun yang terkait dengan Rekomendasi.
Zoredache
@Zoredache Lihat juga: serverfault.com/q/280405 dan projects.puppetlabs.com/issues/4113
Shane Madden

Jawaban:

10

Ini sekarang dimungkinkan melalui pengaturan "install_options" dalam tipe 'paket' Wayang: http://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options

Sebagai contoh:

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

Hal di atas memastikan opsi "--no-install-Recommends" diteruskan ke apt-get, yang melewatkan paket yang disarankan hanya untuk pemasangan ini: http://manpages.ubuntu.com/manpages/precise/man8/apt-get .8.html

Tim Donohue
sumber
3

Saya telah menemukan solusi berikut sejauh ini, tetapi mereka tidak ideal.

Tunggu hingga tambalan yang baru ditambahkan membuatnya menjadi versi yang dirilis dan ditingkatkan.

  • PRO: ini jalan yang benar
  • CON: Saya harus menunggu, atau menambal pengaturan saya secara lokal.

Cukup gunakan exec untuk menginstal bukan paket, dan gunakan exec.

  • PRO: mudah dilakukan jika Anda tidak khawatir tentang pengecekan kesalahan.
  • CON: Dibutuhkan baris perintah yang cukup rumit untuk menginstal, tidak secara otomatis memutakhirkan, dan dengan anggun menangani kesalahan pemasangan.

Perbarui konfigurasi apt saya secara global, dan habiskan waktu untuk menemukan semua barang yang hilang dan sesuaikan manifes saya untuk juga menginstal paket yang saya inginkan yang hanya dapat diinstal dengan direkomendasikan.

  • PRO: manifes saya lebih spesifik, dan lebih tepatnya mencerminkan keadaan suatu sistem
  • CON: Memperbaiki manifest / konfigurasi saya untuk mencerminkan kenyataan baru ini akan membutuhkan waktu / upaya yang tidak sepele.

Setel variabel lingkungan APT_CONFIG sebelum menjalankan boneka.

  • PRO: mudah diatur, jika Anda menggunakan boneka cron yang diprakarsai
  • PRO: tidak mengubah perilaku untuk penggunaan apt
  • CON: mudah lupa untuk mengaturnya ketika menjalankan APT secara manual untuk tujuan pengujian.
  • CON: Anda harus memperbaiki semua manifes, sama seperti jika Anda memperbarui konfigurasi global.
Sakit kepala
sumber
2
Bagaimana kalau menulis penyedia kustom menggunakan penyedia apt sebagai orangtua, dan menambahkan bendera yang diperlukan di sana? Entah itu, atau menulis manifes untuk kepala boneka untuk mengeksekusi perintah patch kecuali ada bukti itu sudah diterapkan.
Mike Renfro
@ MikeRenfro yang tidak keluar dari pertanyaan, tapi saya tidak terlalu akrab dengan ruby.
Zoredache