Hmm, Uma maneira seria olhar para escrever um wrapper em torno do gerenciador de pacotes de sistemas, ou seja, apt-get, e se os pacotes não retornarem, instale com cpan, cpanm, etc.
sub check_pre_req_package { my $package = shift; system("dpkg -s $package > /dev/null 2>&1"); if ( $? != 0 ) { system("apt-get -y install $package > /dev/null 2>&1"); if ( $? != 0 ) { system("cpanm $package"); } } elsif ($? == 0) { print "Package $package is already installed \n"; } } my @pre_req_packages = qw(strace nmap gcc); foreach(@pre_req_packages) { check_pre_req_package($_); }
Claro que com isso você teria que fazer distinção entre maiúsculas e minúsculas (ou mudar o caso) pois acredito que o debian usa um formato lib (package-name) -perl em todas as letras minúsculas e o cpan vai querer um formato diferente , etc, mais esse código não foi testado e algo que acabou de ser colocado juntos.
Depois, há um bom script bash, como eu usei comandos do sistema neste exemplo
Minha melhor sugestão é que você olhe para o uso de algo como cfengine ou fantoche e / ou algum outro que eu tenho certeza que está lá fora, gerenciamento de configuração do sistema. Em seguida, use svn ou git ou ... para fazer alterações no envio para um repositório que será implantado em todos os seus servidores. Se você for gerenciar e fazer as alterações em "numerosos" servidores, então o cfengine / puppet / etc facilitará muito a sua vida depois de configurado. apenas meus dois.