Mie Oct 15, 2008 9:04 am
|
 |
losweberos
Perlero Nuevo

|
Registrado: 02 Oct 2008
Mensajes: 17
|
|
| Problemas con @INC |
|
|
Buenas, creo que esta consulta va aquí, porque, al menos a mi se me va de madre, con perdón por la expresión.
Bueno comienzo, como ya comenté soy nuevo en esto de Perl y me ha caído un proyecto en él, lo que trae la ventaja de aprender este lenguaje que cada vez me gusta más, pero me tiene algo "despistado". El tema es que ya me han dejado los fuentes, y al montar el servidor de pruebas, me encuentro que los módulos creados por la gente que los desarrolló están en un directorio dentro del servidor web, sin embargo, y pese a que todos los scripts usan como mínimo uno de sus módulos, en ninguno de ellos se añade la ruta a @INC, tras preguntarle al santo ( si, Google ) no he encontrado forma de configurarlo en el servidor ( me parece lógico ) y solo una de hacerlo en Perl ( recompilarlo modificado ), y aquí surge mi duda:
- ¿Realmente tengo que recompilarlo?, en caso negativo, ¿qué alternativa hay?
- Si no hay más remedio que recompilar, ¿dónde puedo alguna guía sencilla? No sé C...
Imagino que la mejor opción es "retocar" la aplicación, pero no la tengo permitida.
Muchas gracias por la atención y un saludo. |
|
|
|

Mie Oct 15, 2008 9:31 am
|
 |
losweberos
Perlero Nuevo

|
Registrado: 02 Oct 2008
Mensajes: 17
|
|
|
|
|
Perdón, donde pongo:
quiero poner:
|
|
Mie Oct 15, 2008 9:33 am
|
 |
losweberos
Perlero Nuevo

|
Registrado: 02 Oct 2008
Mensajes: 17
|
|
|
|
|
| Lo que pretendo decir es que no puedo retocar todos los scripts ya creados, disculpad por la cantidad de Post para algo tan sencillo... |
|
Mie Oct 15, 2008 9:41 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
Recuerda que puedes borrar y editar tus propios mensajes pulsando en los botones que hay a la derecha.
Puedes colocar los módulos en alguno de los directorios de @INC.
O jugar con los enlaces simbólicos de Unix para que @INC los encuentre.
O definir la variable de entorno PERL5LIB con el directorio donde están.
... |
|

Jue Oct 16, 2008 3:08 am
|
 |
losweberos
Perlero Nuevo

|
Registrado: 02 Oct 2008
Mensajes: 17
|
|
|
|
|
Muchas gracias por la respuesta, no he conseguido borrar los Post, imagino que por estar respondidos, pero para otra ya lo sé, disculpad.
En cuanto a las soluciones que propone explorer, los módulos he de colocarlos dónde los tengo ( donde hay patrón... ), por lo que la solución de moverlos no me es posible ( ya me gustaría ), la opción de los enlaces simbólicos es una solución en el entorno que nos estamos montando nosotros, pero más adelante tendremos que montar un entorno dónde, tal vez, no podamos arreglarlo así.
La tercera me parece la más adecuada, pero estoy teniendo un problema con ella. He probado creando y ajustando la variable de entorno PERL5LIB, de manera que, haciendo un perl -V da como que mi directorio está en PERL5LIB y en @INC:
| Código: |
%ENV
PERL5LIB="/opt/metrolan/libgen"
@INC:
/opt/metrolan/libgen
/etc/perl
/usr/local
/lib/perl/5.8.8
/usr/local/share/perl/5.8.8
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
/usr/local/lib/site_perl
. |
sin embargo al ejecutar el CGI me da un 500 "Internal Server" y el log dice:
| Código: |
Can't locate Entorno.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /opt/metrolan/cgi-bin/inicio.pl line 5.
BEGIN failed--compilation aborted at /opt/metrolan/cgi-bin/inicio.pl line 5.
[Thu Oct 16 10:40:15 2008] [error] [client 172.22.21.65] Premature end of script headers: /opt/metrolan/cgi-bin/inicio.pl |
El archivo Entorno.pm se encuentra en /opt/metrolan/libgen, como habréis imaginado, he probado a reiniciar la máquina Linux dónde está todo por si acaso, pero el resultado es el mismo.
Muchas gracias de nuevo por la atención. |
|

Jue Oct 16, 2008 4:03 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
Debes modificar el entorno (variables de entorno) del servidor web que ejecutas en la máquina, para que tenga exportada la variable PERL5LIB.
En Apache, por ejemplo, se hace con la directiva SetEnv. |
|
Jue Oct 16, 2008 8:43 am
|
 |
losweberos
Perlero Nuevo

|
Registrado: 02 Oct 2008
Mensajes: 17
|
|
|
|
|
| Gracias, lo solucioné así. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|