instalando muitos módulos perl

4

Eu fui desembarcado com o trabalho de documentar como instalar um aplicativo muito complicado em um servidor limpo. Parte do aplicativo requer muitos scripts perl, cada um dos quais parece requerer muitos módulos perl diferentes.

Eu não sei muito sobre o perl, e só conheço uma maneira de instalar os módulos necessários. Isso significa que minha documentação agora parece assim:

Type each of these commands and accept all the defaults:

sudo perl -MCPAN -e 'install JSON'
sudo perl -MCPAN -e 'install Date::Simple'
sudo perl -MCPAN -e 'install Log::Log4perl'
sudo perl -MCPAN -e 'install Email::Simple'
(.... continues for 2 more pages... )

Existe alguma maneira que eu possa fazer toda essa linha como eu posso com aptidão, ou seja,

Type the following command and go get a coffee:

sudo aptitude install openssh-server libapache2-mod-perl2 build-essential ...

Obrigado (em nome das pessoas que sofrem muito tempo e que lerão meu documento)

EDIT: A melhor maneira de fazer isso é usar as versões empacotadas. Para os módulos que não foram empacotados para o Ubuntu 10.10, acabei com um pequeno script em Perl que encontrei aqui )

#!/usr/bin/perl -w
    use CPANPLUS;
    use strict;
    CPANPLUS::Backend->new( conf => { prereqs => 1 } )->install(
        modules => [ qw(
            Date::Simple
            File::Slurp
            LWP::Simple
            MIME::Base64
            MIME::Parser
            MIME::QuotedPrint
        ) ]
    );

Isso significa que posso colocar um bom folheto no meu documento:

sudo perl installmodules.pl
    
por Colin Pickard 22.02.2011 / 17:19

5 respostas

4

Dependendo da sua distribuição, muitos módulos perl podem já estar empacotados.

Antes de usar o CPAN, verifique se alguns / mais / todos os pacotes necessários ainda não estão disponíveis para sua distro.

    
por 22.02.2011 / 17:23
1

Eu descobri que o CPAN é menos que ideal para sistemas de longa duração, já que atualizar módulos com o passar do tempo parece ser menos do que ideal.

Eu recomendaria usar o sistema integrado de gerenciamento de pacotes do seu sistema. Ao usar um repositório específico de distribuição, você deve ter menos problemas com dependências e, à medida que os módulos forem atualizados, você receberá as novas versões também. Já que você parece estar usando o Ubuntu, você pode precisar habilitar alguns dos repositórios extras como o mundo, ou metaverse, ou uber-ultra-intraverse.

Falhando nisso, existe um site relativamente novo chamado Linux Packages Search , que tenta compilar pacotes para todos os tipos de sistemas. Eu tive sorte em encontrar qualquer pacote extra que eu precisasse, se não estivesse disponível em nenhum outro lugar.

    
por 22.02.2011 / 17:38
1

Se você precisar fazer uma instalação de origem desses módulos (como eu frequentemente preciso, já que eu os instalo como um usuário não-root em um local diferente do padrão do sistema) eu recomendo o CPANPLUS como uma atualização que vale a pena CPAN padrão - ele lida com a resolução de dependências e pode instalar automaticamente todas as dependências de um módulo enquanto você toma um café.

Além disso, se este grande aplicativo complicado que você está instalando também for distribuído no CPAN (vou adivinhar que é RT, o pesadelo de dependência perl preferido de todos), geralmente há um pacote Bundle::AppName no CPAN também, que acumula tudo o que é necessário para uma determinada versão do aplicativo.

Espero que ajude; boa sorte!

    
por 22.02.2011 / 18:45
0

Eu criaria um módulo de estilo de tarefa que agrupasse todas as suas listagens de dependência em um módulo de estilo CPAN. Dessa forma, você pode usar ferramentas cpan padrão para gerenciá-lo. Por exemplo, aqui está um pacote que costumo usar (plugue sem vergonha)

link

Você provavelmente poderia simplesmente pegar algo assim e modificar conforme necessário.

Considere também o uso de local :: lib em vez do caminho de inclusão global perl. Dessa forma, você obtém melhor gerenciamento de seus deps e não precisa de root. Aqui está um link para um livro bom e gratuito que cobre isso (entre outras coisas)

link

    
por 22.02.2011 / 22:18
-1

use a função do sistema e use & & operador após cada instalação do módulo como

system("sudo apt-get install 1 && sudo apt-get install 2 &&....");
    
por 27.06.2016 / 11:01

Tags