Debian

沒有 APT 推薦使用 puppet

  • September 17, 2021

我在工作中使用 puppet 管理一堆 Debian 伺服器,其中包括安裝軟體包。我在多個系統上安裝的一個包是 nmap,它用於驗證防火牆規則是否設置正確。在 Debian 7.0 上,如果你啟用了 APT::Install-Recommends,你會得到一大堆垃圾以及 nmap(見下文)。

我不希望安裝 nmap 並啟用建議的所有廢話。一種解決方案是更新我的 apt 配置APT::Install-Recommends "0";。但我不想讓它成為預設值。大多數時候,我希望推薦包括在內。推薦的包大部分都很好,而且我沒有得到很多我不需要的東西。但是有一些包裹帶來了我不想要/不需要的想法。

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

使用“apt”包提供程序時,是否有任何方法可以控制是否通過 puppet 安裝推薦? 我不想與 aptitude 提供者混為一談,因為 apt 和 aptitude 彼此並不完全兼容。

有推薦

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

無推薦

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

現在可以通過 Puppet ‘package’ 類型中的“install_options”設置來實現: https ://puppet.com/docs/puppet/latest/types/package.html#package-attribute-install_options

例如:

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

以上確保將“–no-install-recommends”選項傳遞給 apt-get,它會跳過為此安裝推薦的軟體包:http: //manpages.ubuntu.com/manpages/precise/man8/apt-get .8.html

到目前為止,我已經找到了以下解決方案,但它們並不理想。

等到最近添加的更新檔使其成為發布版本併升級。

  • PRO:這是正確的方法
  • CON:我必須等待,或者在本地修補我的設置。

只需使用 exec 來安裝而不是包,然後使用 exec。

  • PRO:如果您不擔心錯誤檢查,這很容易做到。
  • 缺點:安裝需要相當複雜的命令行,不會自動升級,並且可以優雅地處理安裝錯誤。

全域更新我的 apt 配置,花時間查找所有失去的東西並調整我的清單以安裝我想要的軟體包,這些軟體包只有通過推薦才能安裝。

  • PRO:我的清單更具體,更準確地反映了系統的狀態
  • CON:修復我的清單/配置以反映這一新現實將花費大量的時間/精力。

在執行 puppet 之前設置 APT_CONFIG 環境變數。

  • PRO:易於設置,如果您使用的是 cron 啟動的 puppet
  • PRO:不會改變任何手動使用 apt 的行為
  • 缺點:手動執行 APT 進行測試時容易忘記設置。
  • 缺點:您必須修復所有清單,就像您更新全域配置一樣。

引用自:https://serverfault.com/questions/513588