XOOPS Brasil

 

2.7. Comentários de Instalação do Perl

2.7.1. Instalando Perl no Unix

O suporte Perl para o MySQL é fornecido pela interface cliente DBI/DBD. Veja mais informações sobre isto na Seção 12.5, “API Perl do MySQL”. O código do cliente Perl DBD/DBI exige Perl Versão 5.004 ou posterior. A interface não funcionará se você tiver uma versão mais do Perl.

O suporte MySQL Perl também exige que você tenha instalado o suporte a programação do cliente MySQL. Se você instalou o MySQL a partir de arquivos RPM, os programas cliente estão no cliente RPM, mas o suporte a programação do cliente está no RPM de desenvolvimento. Certifique de se instalar este RPM posteriormente.

Na Versão 3.22.8, o suporte Perl é distribuído separadamente do dsitribuição principal do MySQL. Se você quiser instalar o suporte Perl, os arquivos que você precisrá pode ser obtidos em http://www.mysql.com/downloads/api-dbi.html.

As distribuições Perl são fornecidas como arquios tar compactados e são chamados MODULE-VERSION.tar.gz, onde MODULE é o nome do modulo e VERSION é o número da versão. Você deve conseguir as distribuições Data-Dumper, DBI, e DBD-mysql e instalá-las nesta ordem. O procedimento de instalação é mostrado aqui. O exemplo mostrado é para o módulo Data-Dumper, mas o procedimento é o mesmo para todas as distribuições:

  1. Descompacte as distribuições no diretório atual:

    shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
    

    Este comando cria um diretório chamado Data-Dumper-VERSION.

  2. Entre no diretório principal da distribuição descompactada:

    shell> cd Data-Dumper-VERSION
    

  3. Contrua a dsitribuição e compile tudo:

    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

O comando make test é importante porque verifica que o módulo está funcionando. Note que ao executar este comando durante a instalação do DBD-mysql para exercitar o código da interface, o servidor MySQL deve estar em execução ou teste irá falhar.

É uma boa idéia reconstruir e reinstalar a distribuição DBD-mysql mesmo se você instalar uma nova distribuição do MySQL, particularmente se você notar simntomas como se todos os seus scripts DBI realizarem dump core depois de você atualizar o MySQL.

Se você não tem o direito para instalar os módulos Perl no diretório de sistema ou se você quiser instalar módulos Perl locais, a seguinte referência pode ajudá-lo:

http://servers.digitaldaze.com/extensions/perl/modules.html#modules

Procure sob o título Installing New Modules that Require Locally Installed Modules.

2.7.2. Instalaando ActiveState Perl no Windows

Para instalar o módulo DBD do MySQL com ActiveState Perl no Windows, você deve fazer o seguinte:

  • Obter o ActiveState Perl em http://www.activestate.com/Products/ActivePerl/ e instalá-lo.

  • Abrir um prompt do DOS.

  • Se exigido, configurar a variável HTTP_proxy. Por exemplo, você pode tentar:

    set HTTP_proxy=my.proxy.com:3128
    
  • Inicie o progrma PPM:

    C:\> c:\perl\bin\ppm.pl
    
  • Se você já não o fez, instale o DBI:

    ppm> install DBI
    
  • Se der tudo certo, execute o seguinte comando:

    install \
    ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd
    

O acima deve funcionar pelo menos com o ActiveState Perl Versão 5.6.

Se você não puder fazer o mostrado acima funcionar, você deve instalar o driver MyODBC e conectar ao servidor MySQL através do ODBC:

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
die "Got error $DBI::errstr when connecting to $dsn\n";

2.7.3. Problemas Usando a Interface Perl DBI/DBD

Se Perl informar que não pode encontrar o módulo ../mysql/mysql.so, então o problema mais provável é que o Perl não pode localizar a biblioteca compartilhada libmysqlclient.so.

Você pode corrigir isto por qualquer um dos seguintes métodos:

  • Compile a distribuição DBD-mysql com perl Makefile.PL -static -config em vez de perl Makefile.PL.

  • Copie libmysqlclient.so para a diretório onde sua bibliotecas compartilhadas estão localizadas (provavelmente /usr/lib ou /lib).

  • No Linux você pode adicionar o caminho do diretório onde libmysqlclient.so está localizado ao arquivo /etc/ld.so.conf.

  • Adicione o caminho do diretório onde libmysqlclient.so está localizada à variável de ambiente LD_RUN_PATH.

Se voce receber os seguintes erros de DBD-mysql, você provavelmente está usando gcc (ou usando um binário antigo compilado com gcc):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

Adicione -L/usr/lib/gcc-lib/... -lgcc ao comando de ligação quando a biblioteca mysql.so estiver construída (verifique a saída de make para mysql.so quando você compilar o cliente Perl). A opção -L deve especificar o caminho do diretório onde libgcc.a está localizada no seu sistema.

Outra causa deste problema pode ser que Perl e o MySQL não são compilados com gcc. Neste caso, você pode resolver o problema compilando ambos com gcc.

Se você receber o seguinte erro de DBD-mysql quando executar o teste:

t/00base............install_driver(mysql) failed:
Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

significa que você precisa adicionar a biblioteca compactada, -lz, a sua linha de ligação. Isto pode ser feito com a seguinte alteração no arquivo lib/DBD/mysql/Install.pm:

$sysliblist .= " -lm";

Altere esta linha para:

$sysliblist .= " -lm -lz";

Depois disto, você deve executar 'make realclean' e proceder com o instalação desde o início.

Se você quiser usar o módulo Perl em um sistema que não suporta ligação dinâmica (como SCO) você pode gerar uma versão estática do Perl que inclui DBI e DBD-mysql. O modo que isto funciona é que você gera uma versão do Perl com o çodigo DBI ligado e instalado no topo do seu Perl atual. Entao você o utiliza para construir uma versão do Perl que adicionalmente tem o código DBD ligado em si, e instale-o.

No SCO, você deve ter as seguintes variáveis de ambiente configuradas:

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
ou
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
/usr/skunk/man:

Primeiro crie um Perl que inclui um módulo DBI ligado estaticamente executando estes comandos no diretório onde a sua distribuição DBI está localiada:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Então você deve intalar o novo Perl. A saída de make perl indicará o comando make exato que você precisará executar para realizar a instalação. No SCO, isto é make -f Makefile.aperl inst_perl MAP_TARGET=perl.

A seguir use o Perl récem criado para criar outro Perl que também inclui uma DBD::mysql estaticamente ligado rodando estes comandos no diretório onde sua distribuição DBD-mysql está localizada:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Finalmente você deve instalar este novo Perl. Novamente, a saída de make perl indica o comando a usar.