Página 1 de 2

CGI::Session-4.48

NotaPublicado: 2018-02-07 10:27 @477
por seafree
¿Qué tal? Me encuentro instalando CGI::Session-4.48 en Linux Centos 7 y me manda el siguiente error al momento de ejecutar # perl Makefile.PL:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
#### TESTING #####

You are encouraged to run tests for the backend you will be using. The
database backends that need a customized connection string won't run by
default. To run them, some environment variables must be set.

The simplest method is to use the standard "DBI_DSN/DBI_USER/DBI_PASS"
environment variables.

Otherwise, you can set these variables:
For PostgreSQL:
    CGISESS_PG_DSN
    CGISESS_PG_USER
    CGISESS_PG_PASS

For MySQL:
    CGISESS_MYSQL_DSN
    CGISESS_MYSQL_USER
    CGISESS_MYSQL_PASS
    CGISESS_MYSQL_SOCKET

----------------------------------------
Warning: Module::Metadata::Changes's ini.report.pl failed to generate or update Changelog.ini.
----------------------------------------
WARNING: EXTRA_META is not a known parameter.
Warning: prerequisite CGI 3.26 not found.
'EXTRA_META' is not a known MakeMaker parameter name.
Generating a Unix-style Makefile
Writing Makefile for CGI::Session
Writing MYMETA.yml and MYMETA.json
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Agradeceré su apoyo para concluir con la instalación del módulo CGI::Session-4.48 en Linux Centos 7. ¿Qué recomiendan?

Saludos y gracias.

Re: CGI::Session-4.48

NotaPublicado: 2018-02-07 13:50 @618
por explorer
Yo lo que haría, como administrador del sistema (root), es ejecutar el comando

yum install perl-CGI-Session

y listo.

Más información: Instalación de módulos y bibliotecas en Perl

Re: CGI::Session-4.48

NotaPublicado: 2018-02-07 14:27 @643
por seafree
Ok, ya lo hice pero me muestra esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# yum install perl-CGI-Session
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.cenac.ipn.mx
 * epel: archive.linux.duke.edu
 * extras: mirror.cenac.ipn.mx
 * updates: mirror.cenac.ipn.mx
 * webtatic: sp.repo.webtatic.com
Package perl-CGI-Session-4.35-16.el7.noarch already installed and latest version
Nothing to do
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Compilo un script y el resultado es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# perl -w regevent.cgi
Can't locate CGI/Session.pm in @INC (you may need to install the CGI::Session module) (@INC contains: /usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux /usr/local/lib/perl5/site_perl/5.26.1 /usr/local/lib/perl5/5.26.1/x86_64-linux /usr/local/lib/perl5/5.26.1) at regevent_sifamep.cgi line 9.
BEGIN failed--compilation aborted at regevent.cgi line 9 (#1)
    (F) You said to do (or require, or use) a file that couldn't be found.
    Perl looks for the file in all the locations mentioned in @INC, unless
    the file name included the full path to the file.  Perhaps you need
    to set the PERL5LIB or PERL5OPT environment variable to say where the
    extra library is, or maybe the script needs to add the library name
    to @INC.  Or maybe you just misspelled the name of the file.  See
    "require" in perlfunc and lib.

Uncaught exception from user code:
        Can't locate CGI/Session.pm in @INC (you may need to install the CGI::Session module) (@INC contains: /usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux /usr/local/lib/perl5/site_perl/5.26.1 /usr/local/lib/perl5/5.26.1/x86_64-linux /usr/local/lib/perl5/5.26.1) at regevent.cgi line 9.
        BEGIN failed--compilation aborted at regevent.cgi line 9.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Desconozco qué más hacer, agradeceré me orientes. Gracias.

Re: CGI::Session-4.48

NotaPublicado: 2018-02-08 04:24 @225
por explorer
Ejecuta

# rpm -ql perl-CGI-Session

y así sabrás en qué directorio lo ha instalado.

Si no es un directorio de los que están listados en @INC, entonces deberás editar el programa y añadir una línea al principio así:

use lib 'ruta-al-directorio';

donde se encuentre.

Re: CGI::Session-4.48

NotaPublicado: 2018-02-08 11:00 @500
por seafree
Ejecuté la instrucción tal cual comentas y nada:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# rpm -ql perl-CGI-Session
/usr/share/doc/perl-CGI-Session-4.35   
/usr/share/man/man3/CGI::Session::
/usr/share/perl5/vendor_perl/CGI/Session/
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Probé las 3 rutas y nada. ¿Qué estoy omitiendo?

Otra de las cosas que verifiqué fueron:

# yum whatprovides 'perl(CGI::Session)'
Y el nombre del módulo enviado fue:

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.cenac.ipn.mx
* epel: archive.linux.duke.edu
* extras: mirror.cenac.ipn.mx
* updates: mirror.cenac.ipn.mx
* webtatic: sp.repo.webtatic.com
perl-CGI-Session-4.35-16.el7.noarch : Persistent session data in CGI applications
Repo : base
Matched from:
Provides : perl(CGI::Session) = 4.35



perl-CGI-Session-4.35-16.el7.noarch : Persistent session data in CGI applications
Repo : installed
Matched from:
Provides : perl(CGI::Session) = 4.35

DE ACUERDO A LO ANTERIOR EJECUTÉ:
# yum install perl-CGI::Session

Loaded plugins: fastestmirror, langpacks
base 3.6 kB 00:00:00
epel/x86_64/metalink 15 kB 00:00:00
extras 3.4 kB 00:00:00
mariadb 2.9 kB 00:00:00
updates 3.4 kB 00:00:00
webtatic 3.6 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.cenac.ipn.mx
* epel: fedora-epel.mirror.iweb.com
* extras: mirror.cenac.ipn.mx
* updates: mirror.cenac.ipn.mx
* webtatic: sp.repo.webtatic.com
No package perl-CGI::Session available.
Error: Nothing to do


Por favor te agradeceré me expliques qué sucede.

Me ha surgido una gran duda, porque si estoy usando una aplicación que fue realizada en Perl sobre RedHat, he migrado a CentOS y ahora envía varios errores, entiendo que sino descargué los módulos efectivamente no los encuentra, pero el porqué no se pueden instalar no lo entiendo.

Agradeceré su orientación respecto a ésto porque me ha causado muchos problemas, gracias.

Re: CGI::Session-4.48

NotaPublicado: 2018-02-08 20:13 @884
por explorer
seafree escribiste:Ejecuté la instrucción tal cual comentas y nada:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# rpm -ql perl-CGI-Session
...
/usr/share/perl5/vendor_perl/CGI/Session/
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Debes ponerlo así:

use lib '/usr/share/perl5/vendor_perl';

seafree escribiste:Por favor te agradeceré me expliques qué sucede.

Pues el caso es que no lo sé. Por un lado dice que ya está instalado, y por otro dice que no lo encuentra.

Deberías preguntar en algún foro de CentOS. Yo solo conozco sistemas basados en Debian.

En el enlace que te puse de Instalación de módulos, en la primera sección, viene indicado un procedimiento para saber si un módulo ya está instalado. Ejecuta

perl -MCGI::Session -e 1

en la línea de comandos. Si no sale ningún error, es que sí lo encuentra. Como parece que tu Perl es algo especial, entonces deberás agregar la ruta que te falta:

perl -e 'use lib "/usr/share/perl5/vendor_perl"; use CGI::Session; 1'

Es realmente extraño que no esté esa ruta entre las conocidas por Perl.

Ejecuta

perl -V

para ver las rutas que tiene incluidas por defecto (aparecen al final). Si no está, deberás agregarla con el use lib.

La verdad... esto no me extraña siendo un sistema heredado de Red Hat.

Re: CGI::Session-4.48

NotaPublicado: 2018-02-09 09:56 @455
por seafree
Gracias, explorer. Utilicé:

use lib '/usr/share/perl5/vendor_perl';

Y pudo compilar aunque ahora no pudo localizar CGI/Ajax.pm, pero bueno, es un módulo más que tengo que instalar.

Nuevamente, gracias.

Instalación de Modulos

NotaPublicado: 2018-02-13 09:45 @448
por seafree
¿Qué tal? Ahora mi problema es con la instalación de CGI/Ajax.pm. Ya lo instalé de acuerdo a tu ayuda con el CGI::Session-4.48 pero no lo logro instalar:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# perl -w regevent.cgi
Uncaught exception from user code:
        Base class package "Class::Accessor" is empty.
            (Perhaps you need to 'use' the module which defines that package first,
            or make that module available in @INC (@INC contains: /usr/share/perl5/vendor_perl /usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux /usr/local/lib/perl5/site_perl/5.26.1 /usr/local/lib/perl5/5.26.1/x86_64-linux /usr/local/lib/perl5/5.26.1).
         at /usr/share/perl5/vendor_perl/CGI/Ajax.pm line 4.
        BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/CGI/Ajax.pm line 4.
        Compilation failed in require at regevent.cgi line 12.
        BEGIN failed--compilation aborted at regevent.cgi line 12.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Efectivamente la linea 4 del programa CGI/Ajax.pm hace referencia a use base qw(Class::Accessor);, y la línea 12 del regevent.cgi hace referencia a CGI::Ajax;

Agradezco mucho vuestro apoyo para encontrar una solución, porque de acuerdo a la literatura leída me debería de funcionar y no es así.

Respecto a la instalación de módulos que estoy haciendo y últimamente me estoy dando de topes en la cabezada por la incompatibilidad de instalarlos, les comento que estoy combinando instalación de módulos del Perl desde el sitio del CPAN con archivos RPMs y esto es un desastre porque el CPAN instala módulos en el directorio siteperl/ y los RPM lo instala en el vendorperl/, ¿cierto?

Y recomiendan utilizar yum, pero los rpms se instalan con # rpm -ivh no con yum, ¿cierto?

Así mismo se comenta que lo rpm pueden manejar dependencias fuera del CPAN así también hablan de la incompatibilidad de los directorios siteperl (cpan) y el vendorperl (rpm), por lo mismo se dice que es una mala idea mezclar ambos.

-/usr/share/perl5/vendor_perl
    perl-CGI-Ajax-0.707-1.el6.rf.noarch.rpm
    CGI
    CGI-Application-4.50
    CGI-4.38
    Class-DBI-v3.0.17
    CGI-Ajax-0.707

-/usr/local/lib/perl5/site_perl
        CGI-Simple-1.115
        CGI-Application-4.50
        5.26.1

Por favor, agradeceré su aclaración para éste laberinto que he creado.

Enormes gracias.

Re: CGI::Session-4.48

NotaPublicado: 2018-02-13 15:35 @691
por explorer
Ya te digo que el problema principal es de saber de administración de ese tipo de sistemas.

No importa que los módulos estén en un sitio u otro. En tu programa con la ayuda de 'use lib' puedes llegar a cualquiera.

Si eres root del sistema, procura instalar siempre primero con la ayuda de yum. Si no, con la ayuda de cpanp o cpanm. Si no, usar rpm. Si no, descargar directamente desde CPAN. Y siempre en este orden.

El mensaje de error indica que CGI::Ajax no encuentra Class::Accessor. Tendrás que poner un 'use lib' dentro de CGI::Ajax. Sí, es una locura, pero el problema es por mezclar métodos de instalación.

Una posible solución para todo este follón es arrancar el programa con una variable de entorno PERL5LIB. Por ejemplo:

# PERL5LIB="/usr/share/perl5/vendor_perl:/usr/local/lib/perl5/site_perl" perl -w regevent.cgi

O hacerlo dentro del propio programa con 'use lib' o con

$ENV{PERL5LIB} = "/usr/share/perl5/vendor_perl:/usr/local/lib/perl5/site_perl";

Pero... es más cómodo el 'use lib'.

P.D.: Para asegurarse que el separador de rutas es el carácter ':' u otro carácter, ejecutar perl -V:path_sep

P.P.D.: Más información sobre PERL5LIB en perldoc perlrun.

Re: CGI::Session-4.48

NotaPublicado: 2018-02-14 12:25 @559
por seafree
Gracias, explorer. Tienes razón, es todo un follón. Ya logré la compilación y después de este show he pensado instalar solo rpm para evitar este tipo de follones.

ACTUALMENTE CUENTO CON ESTAS INSTALACIONES:

INSTALACIÓN DESDE RPM

-/usr/share/perl5/vendor_perl
perl-CGI-Ajax-0.707-1.el6.rf.noarch.rpm
CGI
CGI-Application-4.50
CGI-4.38
Class-DBI-v3.0.17
CGI-Ajax-0.707

INSTALACIÓN DESDE EL CPAN
-/usr/local/lib/perl5/site_perl
CGI-Simple-1.115
CGI-Application-4.50
5.26.1

LAS RUTAS SON:
#perl -V
@INC:
/usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux NO DEL
/usr/local/lib/perl5/site_perl/5.26.1
/usr/local/lib/perl5/5.26.1/x86_64-linux
/usr/local/lib/perl5/5.26.1

Como se puede observar el @INC tiene la ruta del CPAN. Para dar una solución tendría que reinstalar perl desde '/usr/local/lib/perl5/site_perl'?

Creo que la respuesta es afirmativa pero espero tu confirmación. GRACIAS y respetos PARA TI.