Pergunta

No trabalho eu estou usando Perl 5.8.0 no Windows.

Quando eu coloquei primeiro Perl, eu fui para CPAN, baixado todas as fontes, fez algumas mudanças (no ficheiro.MAK? Para tópicos de suporte, ou coisas assim), e fez nmake / nmake test / nmake instalar . Então, pouco a pouco, eu fiz o download módulos individuais do CPAN e feito a dança nmake.

Então, eu gostaria de atualizar para uma versão mais recente, mas o novo não deve quebrar os scripts existentes. Notavelmente, um monte de módulos "utilização" que eu já instalados deve ser instalado na nova versão.

O que é a maneira mais confiável (e mais fácil) para atualizar a minha versão atual, garantindo que tudo que eu fiz com a dança nmake com ainda estará lá depois de atualizar?

Foi útil?

Solução

Como outros notaram, comece por instalar o novo perl em um local separado. Tenho vários perls instalados, cada completamente separado de todos os outros.

Para fazer isso, você terá que configurar e compilar as fontes si mesmo. Quando você executa configure, você vai ter a oportunidade de especificar o instalador. Eu dei instruções detalhadas para isso em um "Compilando My Own Perl" em a questão do Perl revisão da Primavera de 2008 . Há também um item no Effective Perl Programming que mostra como fazê-lo.

Agora, volte para a sua distribuição e executar cpan -a original para criar um arquivo autobundle. Este é um documento Pod que lista todas as coisas extras que você instalou, e CPAN.pm entende como usar isso para reinstalar tudo.

Para instalar coisas no novo perl, uso esse caminho do Perl para começar CPAN.pm e instalar o arquivo autobundle você criou. CPAN.pm obterá os caminhos de instalação corretas de configuração desse perl.

Veja o resultado para garantir que as coisas vão bem. Este processo não irá instalar as mesmas versões dos módulos, mas as últimas versões.

Como para morango Perl , há uma versão "portátil" você pode instalar em algum lugar além da localização padrão. Dessa forma, você poderia ter o novo perl em mídia removível. Você pode testá-lo em qualquer lugar que você gosta, sem perturbar a instalação local. Eu não acho que isso é completamente pronto para uso geral embora. A Berrybrew ferramenta pode ajudá-lo a gerenciar isso.

Boa sorte,:)

Outras dicas

Gostaria de considerar seriamente olhando para usar morango Perl .

Você pode instalar uma segunda versão do Perl em um local diferente. Você vai ter que reinstalar todos os módulos non-core para a nova versão. Em geral, diferentes versões do Perl não são binário compatível, o que poderia ser um problema se você tiver quaisquer bibliotecas específicas do programa que utilizam componentes XS. módulos Perl puro não deve ser afetado.

Se você ficar dentro da faixa de 5,8, todos os módulos instalados que contêm XS (binários) extensões continuará a trabalho, como a compatibilidade binária é guarenteed dentro dos mesmos 5,8 série. Se você moveu a 5,10, então você teria que recompilar os módulos que contêm componentes XS.

Tudo que você precisa fazer é garantir que as novas listas de construir o anterior incluem diretórios em sua variedade @INC (que é usado para procurar por módulos).

Por os sons dele, eu acho que você está no Windows, caso em que os caminhos @INC atuais podem ser vistos com

perl -le "print for @INC"

Certifique-se de que você direcionar a sua nova versão do Perl em outro diretório. Ele terá todo o prazer coexistem com a versão anterior, e isso permitirá que você escolha qual instalação Perl é usado; é apenas uma questão de obter o seu fim PATH resolvido. Assim que um intérprete perl é iniciado, ele sabe para onde olhar para o resto de seus módulos.

Strawberry Perl é provavelmente a distribuição mais agradável no Windows estes dias para rolar seus próprios.

Eu acho que a resposta a esta envolve virtualização de algum tipo:

  1. Configurar uma cópia exata de sua máquina ao vivo atual. Atualizar Perl, usando os mesmos locais de diretório e estruturas que você está usando no momento.
  2. Vá até a sua scripts de testá-los na nova imagem.
  3. Uma vez que você está feliz, virar a chave.

O pensamento por trás disso é que há, provavelmente, todos os tipos de dependências sutis e suposições que você não tenha pensado. Embora improvável, a versão mais recente de um módulo particular (possivelmente até mesmo um módulo central, apesar de que é ainda mais improvável) pode ter uma sutil diferença em comparação com o que você estava usando. A menos que você exaustivamente passou por toda a sua base de código, há muito possivelmente um módulo específico que é necessário apenas em determinadas circunstâncias.

Você pode tentar manchar este através da construção de uma lista de todos os seus scripts - uma lista que você deve ter de qualquer maneira, por força de todo o seu código estar sob controle de versão (você são com controle de versão, por exemplo Subversion , sim?) - e interagindo com ele, correndo perl -c em cada script. por exemplo. este script . Esse tipo de teste automatizado é inestimável: você pode configurá-lo correr, ir embora para um café ou qualquer outra coisa, e voltar para verificar se tudo funcionou. As primeiras vezes que você provavelmente encontrará um módulo obscuro que você tinha esquecido, o que é bom: todo o ponto de automatizar isso é para que você não tem que fazer o Drudge-obra de verificar cada script.

Quando eu fiz isso eu instalei o mais recente em um diretório separado. Há um pouco de confusão acrescentou executar duas versões, mas definitivamente ajuda se certificar que tudo está trabalhando em primeiro lugar, e fornece uma maneira rápida de mudar de volta para o velho em uma pitada. Eu também configurar o Apache para executar dois serviços distintos, para que eu pudesse macaco ao redor com o Perl mais recente em um serviço sem tocar a produção no antigo Perl.

É provavelmente um sábio muito, em retrospectiva, para instalar em um computador separado, e fazer o seu teste lá. Gravar cada alteração de configuração que você precisa fazer.

Não tenho certeza sobre a construção de it-yourself eu sempre usei apenas binários pré-embalados para Windows.

Eu não tenho certeza eu entendo exatamente o que você está pedindo. Você tem uma lista de alterações feitas no 5.8 makefile? Ou a questão é como obter essa lista um? Você também está perguntando como descobrir quais pacotes acima da base instalada que você obteve do CPAN? Você também está perguntando como teste que as alterações personalizadas não vai quebrar esses pacotes, se você pegá-los do CPAN novamente?

Por que você não use ActivePerl e sua "ppm" ferramenta para (re) instalar módulos?

text alt

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