Como verificar a disponibilidade do Perl, sua versão e presença de um módulo necessário?
-
25-09-2019 - |
Pergunta
Eu escrevi um script Perl, só quero dar a todos, pois planejei escrever um script bash usado para testar o ambiente de um usuário e descobrir se esse ambiente é capaz de executar o script Perl.
Eu quero testar as coisas como:
- Se o Perl foi instalado nesse sistema
- Perl deve ter a versão 5 ou mais
- Se o módulo json :: algum está disponível
Qualquer sugestão seria muito apreciada :-)
Solução
if perl -MJSON::Any -e 'print "$JSON::Any::VERSION\n"' >/dev/null 2>&1
then : OK
else echo "Cannot find a perl with JSON::Any installed" 1>&2
exit 1
fi
Eu costumo usar '${PERL:-perl}
'e construções semelhantes para identificar o comando (para awk
vs. nawk
ou gawk
; troff
vs. groff
; etc).
Se você deseja testar a versão do JSON :: alguma, capture a saída do comando. Se você quiser testar a versão do Perl, adicione 'use 5.008009;
'Ou qualquer número que você acha que seja sensato. (Não faz muito tempo que eles finalmente removeram o Perl 4 de um dos sistemas de arquivos montados em NFS no trabalho - mas esse não foi o único Perl na máquina - pelo menos, não na última década ou mais!)
Outras dicas
Não, não escreva um script de shell. Perl já tem uma maneira perfeitamente boa de fazer isso. A maneira correta de fazer isso é criar uma distribuição pronta para CPAN usando a cadeia de ferramentas normal. Parte disso é explicada em PerlNewmod, PerlmodStyle e Perlmodinstall.
Para um exemplo mínimo de trabalho, crie um layout de diretório assim:
.
├── Build.PL
├── README
└── script
└── abuscript.pl
No Build.PL
Arquivo, coloque:
use 5.000;
use Module::Build qw();
Module::Build->new(
module_name => 'abuscript',
dist_version => '1.000',
dist_author => 'abubacker <abubacker@example.com>',
dist_abstract => 'describe what the script does in one sentence',
configure_requires => {
'perl' => '5.000',
},
requires => {
'JSON::Any' => 0,
},
)->create_build_script;
Altere os detalhes para concordar com seus propósitos.
No README
Arquivo, coloque algumas instruções de instalação, por exemplo:
To install this module, run the following commands:
perl Build.PL
./Build install
Depois de terminar tudo isso, você corre:
perl Build.PL
./Build manifest
./Build dist
Isso resultará em um .tar.gz
Arquivo que você distribuirá. Diga aos seus usuários para instalá -lo como qualquer outro módulo CPAN, ou se eles não souberem o que isso significa, eles devem ler o ReadMe.
Se você tiver tempo, recomendo converter seu script em um módulo. O programa PL2PM (vem com Perl) e o módulo CPAN Módulo-Starter-PBP ajudar você.
Se permitir a licença, é possível fazer upload de seu código para a CPAN para torná -lo ainda mais conveniente para seus usuários. Peça ajuda em qualquer um dos seguintes locais primeiro: Lista de correspondência Module-athors@perl.org, fórum da web Perlmonks, IRC Channel #ToolChain no Magnet (IRC: //irc.perl.org/toolchain)
Em relação à verificação da disponibilidade Perl, a maneira mais fácil de fazer isso é verificar o código de retorno (código de saída) do comando perl -v
, se isso não for 0
, você não tem Perl.
Agora, sobre os requisitos Perl, você deve Lide com eles de dentro do seu script Perl:
#!/usr/bin/env perl
use 5.006_001;
use ModuleName 2.0;
O código Perl acima será executado apenas com o Perl 5.6.1 ou mais recente e com o modele "ModuleName" versão 2.0 ou mais recente. Não há necessidade de verificar manualmente a versão Perl da Bash, é melhor e mais fácil fazê -lo diretamente do script Perl.
Referências: