Como posso dizer quais módulos receberam originalmente a instalação Perl específica em uma máquina?

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

  •  21-09-2019
  •  | 
  •  

Pergunta

Como posso dizer quais módulos receberam originalmente a instalação Perl específica em uma máquina?

(Isto é não uma duplicata de:Como posso saber se um módulo Perl é o núcleo ou parte da instalação padrão?("Como posso saber se um módulo Perl é o núcleo ou parte da instalação padrão?") - é de fato uma questão de spin -off dele)

Estou procurando o que veio com a instalação originalmente, quais módulos foram fornecidos como parte dessa instalação, o que estava embutido. Não o que foi instalado desde então.

Eu gostaria que isso trabalhasse com algum Versão Perl.

Eu quero poder fazer isso:

  • Usando um script dentro de um programa Perl/comando na máquina isso tem a instalação. Então, para isso, eu confiaria na instalação para ter um registro de alguma forma sobre o que ela tem originalmente.
  • No pacote baixado antes de eu fazer a instalação. Pergunte o que tem módulos.

As razões pelas quais eu quero fazer isso é:

  • Quero saber quais módulos eu posso esperar como padrão ao escrever software para executar em uma máquina com a instalação Perl e quais módulos eu precisaria adicionar que não sejam o padrão
  • Se eu mantiver a imagem/pacote do instalador original ou saber como obter a coisa exata novamente online, tenho uma instalação Perl consistente repetível para várias máquinas com o conhecimento de quais módulos estarão presentes e quais módulos não o farão.
  • Meu software Perl terá um procedimento de implantação bem definido, pois é fácil definir exatamente o que é necessário pelo software
  • Talvez eu não consiga apenas atualizar/atualizar a versão Perl facilmente devido a políticas em minha organização (é assim que é, não quero uma discussão paralela sobre isso). Essa política pode ser justificada, pois sempre há um risco de atualização para o novo software que pode superar os benefícios. Os desenvolvedores, portanto, precisam saber o que podem esperar estar disponíveis.

A razão pela qual faço essa pergunta é porque, para qualquer versão Perl, parece não haver uma maneira automatizada de descobrir a instalação padrão geral que define quais módulos você pode esperar estar presente em sua instalação padrão em sua máquina - veja a pergunta:Como posso saber se um módulo Perl é o núcleo ou parte da instalação padrão?("Como posso saber se um módulo Perl é o núcleo ou parte da instalação padrão?")

As versões Perl não podem ser confiadas para dizer quais módulos estão presentes ou não. Claro, pode haver documentação online que informa. Mas eu preciso de um automatizado maneira de fazer isso no lançamento, baixar/instalar. Mesmo a mesma versão Perl em diferentes distribuições Linux/Unix pode ser diferente.

Foi útil?

Solução

Em geral, você não pode. Você terá muito menos frustração se aceitar isso e abordar o problema de um ângulo diferente. Módulo :: CoreList fornece uma lista do que deve Seja incluído em todas as instalações, no mínimo, mas os fornecedores não são obrigados a aderir a isso e a maioria das distribuições inclui muitos módulos que não fazem parte do núcleo. Exceto a construção de seu próprio banco de dados do que estava incluído em qual versão de cada distribuição - uma tarefa assustadora - não há muita esperança. Observe que, mesmo para módulos que vieram com uma distribuição, a versão instalada pode ser diferente.

Eu posso ver algumas maneiras diferentes de abordar isso:

  1. Se você conhece sua meta no tempo de desenvolvimento (por exemplo, uma versão específica do ActivePerl), pode tomar decisões com base nisso.
  2. Para o caso geral, implante seu aplicativo como um módulo e especifique dependências. por exemplo, uso Módulo :: Build e listar pré -requisitos norequires Seção do script Build.pl. o CPAN O shell pode seguir e resolver dependências automaticamente.
  3. Se você quiser evitar o problema, use totalmente PAR e PAR :: Packer Para criar pacotes de implantação independentes.

Outras dicas

Para Debian ou Ubuntu, você pode usar

$ dpkg --listfiles perl | grep '\.pm$'

Para redhat:

$ rpm -ql perl | grep '\.pm$'

Estou procurando o que veio com a instalação originalmente, quais módulos foram fornecidos como parte dessa instalação, o que foi embutido. Não o que foi instalado desde então.

Talvez para módulos que não sejam do núcleo você possa analisar perlocal.pod, separando o lote inicial de módulos instalados juntamente com a própria instalação Perl a partir dos posteriores com base na data. Você está procurando linhas como:

=head2 Wed Apr 30 15:40:38 2008: C<Module> L<URI|URI>

Portanto, os primeiros primeiros seriam aqueles que foram instalados com o próprio Perl e deveriam ter a mesma data (embora não seja a mesma hora, é claro). Os instalados com uma diferença de 24 horas ou mais seriam o que você está procurando.

Não tenho certeza sobre os módulos principais, pois, na minha opinião, as respostas que você obteve na pergunta anterior a que você vinculou são satisfatórias, mas claramente você não pensou assim. Provavelmente estou perdendo alguma coisa :)

Saúde, oferta

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