Como verificar a disponibilidade do Perl, sua versão e presença de um módulo necessário?

StackOverflow https://stackoverflow.com/questions/2605545

  •  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:

  1. Se o Perl foi instalado nesse sistema
  2. Perl deve ter a versão 5 ou mais
  3. Se o módulo json :: algum está disponível

Qualquer sugestão seria muito apreciada :-)

Foi útil?

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:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top