Я использую марионетку для управления множеством серверов Debian на работе, частично, если это включает установку пакетов. Один пакет, который я устанавливаю в нескольких системах, - это nmap, который используется для проверки правильности настройки правил брандмауэра. В Debian 7.0, если у вас включен APT :: Install-Recommends, вы получите целую кучу чуши вместе с nmap (см. Ниже).
Я не хочу, чтобы вся эта ерунда, которая устанавливает nmap с включенными рекомендациями, включена. Одним из решений было бы обновить мою подходящую конфигурацию с помощью APT::Install-Recommends "0";
. Но я не хочу, чтобы это было по умолчанию. В большинстве случаев я хочу, чтобы были включены рекомендации. Рекомендуемые пакеты в основном хороши, и я не получаю кучу ненужных вещей. Но есть несколько пакетов, которые наводят на мысль, что я не хочу / не нуждаюсь.
package { 'nmap':
ensure => installed,
require => Class['apt'],
}
Есть ли способ контролировать, установлены ли рекомендации через марионетку при использовании поставщика пакетов apt? Я не хочу возиться с провайдером 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]?
Теперь это возможно с помощью параметра install_options в типе Puppet 'package': http://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options
Например:
package { 'nmap':
ensure => installed,
install_options => ['--no-install-recommends'],
}
Вышеупомянутое гарантирует, что параметр "--no-install-рекомендует" передается в apt-get, который пропускает рекомендуемые пакеты только для этой установки: http://manpages.ubuntu.com/manpages/precise/man8/apt-get.8.html
Пока я нашел следующие решения, но они не идеальны.
Подождите, пока недавно добавленный патч превращает его в выпущенную версию и обновляет.
Просто используйте exec для установки вместо пакета и используйте exec.
Глобально обновите мою подходящую конфигурацию и потратьте время, чтобы найти все недостающие вещи и настроить мои манифесты, чтобы также установить пакеты, которые я хотел, которые устанавливаются только по рекомендации.
Установите переменную среды APT_CONFIG перед запуском марионетки.