A
Size: a a a
A
М
A
М
A
М
A
A
class apt_base::install {
$packages = [
'curl',
'wget',
'htop'
]
exec { 'apt-get update':
path => [ '/bin/', '/sbin/' , '/usr/bin/', '/usr/sbin/' ],
command => 'apt-get update',
unless => 'dpkg -s $packages | grep -q "Status: install ok installed" 2>/dev/null',
before => Package[$packages]
}
ensure_packages($packages, { ensure => 'present' })
}A
A
A
A
A
DS
$ dpkg -s ['curl', 'wget', 'htop']Во вторых в твоем коде используются одинарные ковычки, интерполяция переменных в одинарных ковычках не работает. То есть фактически в шелл попадет такая строка 'dpkg -s $packages':
dpkg-query: error: --status needs a valid package name but '[curl,' is not: illegal package name in specifier '[curl,': must start with an alphanumeric character
Use --help for help about querying packages.
$ dpkg -s $packagesЯ же выше кидал пример, надо сформировать валидную команду для шелла и ее уже пихать. Пример можно адаптировать. А можно вообще скрипт создать полноценный, который на вход принимает список пакетов
dpkg-query: error: --status needs at least one package name argument
Use --help for help about querying packages.
A
DS
$packages = ['wget', 'curl']Не ради фана нужна, она делает из массива $packages, строку:
$check_packages = $packages.map|$p| {"dpkg -s ${p}"}.join(' && ')
dpkg -s wget && dpkg -s curl. То есть строку которую поймет шелл и выполнитA
A
A
DS
$array =
- a
- b
- c