• Publicidad

Calcular dependencias y enpaquetamiento

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Calcular dependencias y enpaquetamiento

Notapor Leo_Gutierrez » 2011-01-10 02:16 @136

Hola, he hecho algunos programitas sencillos, quisiera distribuirlos con algunos amigos, pero no lo he hecho porque me temo que deberán instalar algunos módulos para que corra bien. Los programas usan:

Gtk2::GladeXML;
WWW::YouTube::Download;


incluso hay otro que usa un módulo sobre Wikipedia. Quería saber si hay alguna manera de empaquetar mi script para que pudiera correr en otra máquina sin que tuviera que instalar toda la retahíla de módulos. He pensado en distribuirlo con todos los módulos dentro y un script en shell que instale los módulos, luego que borre, etc, etc, pero creo que sería demasiado engorro.

¿Podrían ayudarme?

Edito:

Encontré algo sobre PAR, ya logré empaquetar un programa, funciona perfecto, lástima que el ejecutable se fue a más de 4 megas, pero no importa tanto. Estoy teniendo problemas para empaquetar otro programa, si sigo teniendo problemas les comento. Cualquier comentario es bien recibido.

No puedo "empaquetar" un programa, les comento:

Estoy siguiendo este tutorial http://niceperl.blogspot.com/2009/08/empaquetado-con-par.html

Creo el ejecutable así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Escritorio/youdwnperl$ ls -1
  2. icono.jpg
  3. youdwnperl.glade
  4. youdwnperl.pl
  5. youdwnperlscreenShot.jpg
  6. leo@leo-desktop:~/Escritorio/youdwnperl$ pp -o you youdwnperl.pl
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

luego intento ejecutarlo y me dice esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Escritorio/youdwnperl$ ./you
  2. Can't locate WWW/YouTube/Download.pm in @INC (@INC contains: CODE(0x8ad7090) /tmp/par-leo/cache-d634a90b316c1378c11f2d79bfeb7256cf787726/inc/lib /tmp/par-leo/cache-d634a90b316c1378c11f2d79bfeb7256cf787726/inc CODE(0x89ac1a8) CODE(0x89ac4a8)) at script/youdwnperl.pl line 28.
  3. BEGIN failed--compilation aborted at script/youdwnperl.pl line 28.
  4. leo@leo-desktop:~/Escritorio/youdwnperl$
  5.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El módulo lo tengo instalado, porque el programa corre bien con "perl youdwnperl.pl", creo que no está encontrando el módulo. ¿Alguna idea?
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026

Publicidad

Re: Calcular dependencias y enpaquetamiento

Notapor explorer » 2011-01-10 06:23 @308

Un fichero .par es un fichero zip. Abre el fichero .par con tu herramienta zip preferida y mira a ver si tiene incluido el módulo WWW/YouTube/Download.pm. Si no lo tiene, el comando pp falló a la hora de incluirlo, pero puedes hacerlo de forma manual así:

zip you WWW/YouTube/Download.pm

según indica el propio manual que has enlazado.

Otra opción es indicarle a pp los módulos extra a instalar:

pp -M WWW::YouTube::Download you
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Calcular dependencias y enpaquetamiento

Notapor Leo_Gutierrez » 2011-01-10 13:24 @600

Lo raro es que sé que lo tengo instalado:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Escritorio/youdwnperl$ find /usr/local/lib/ -type f -iname "Download.pm" -print
  2. /usr/local/lib/perl5/site_perl/5.12.0/WWW/YouTube/Download.pm
  3. leo@leo-desktop:~/Escritorio/youdwnperl$ ls -1
  4. icono.jpg
  5. youdwnperl.glade
  6. youdwnperl.pl
  7. youdwnperlscreenShot.jpg
  8. leo@leo-desktop:~/Escritorio/youdwnperl$ pp -o you youdwnperl.pl -M WWW::YouTube::Download
  9. /usr/bin/pp: Cannot find module WWW/YouTube/Download.pm (specified with -M)
  10. leo@leo-desktop:~/Escritorio/youdwnperl$
  11.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora, pensé que podría directamente incluír el Download.pm así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Escritorio/youdwnperl$ sudo pp -o you youdwnperl.pl -M `find /usr/local/lib/ -type f -iname "Download.pm" -print`
  2. Use of uninitialized value in pattern match (m//) at /usr/share/perl5/PAR/Packer.pm line 770.
  3. Use of uninitialized value $map{"WWW/YouTube/Download.pm"} in length at /usr/share/perl5/PAR/Packer.pm line 801.
  4. Can't call method "desiredCompressionMethod" on an undefined value at /usr/share/perl5/PAR/Packer.pm line 1141.
  5. leo@leo-desktop:~/Escritorio/youdwnperl$
  6.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Pero me da ese error.

Ahora, la instalación del módulo WWW::YouTube::Download parece normal:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Descargas/WWW-YouTube-Download-0.22$ ls -1
  2. blib
  3. Changes
  4. eg
  5. inc
  6. lib
  7. Makefile
  8. Makefile.PL
  9. MANIFEST
  10. META.yml
  11. pm_to_blib
  12. README
  13. t
  14. xt
  15. leo@leo-desktop:~/Descargas/WWW-YouTube-Download-0.22$ sudo perl Makefile.PL
  16. Writing Makefile for WWW::YouTube::Download
  17. leo@leo-desktop:~/Descargas/WWW-YouTube-Download-0.22$ sudo make
  18. Skip blib/lib/WWW/YouTube/Download.pm (unchanged)
  19. Manifying blib/man3/WWW::YouTube::Download.3
  20. leo@leo-desktop:~/Descargas/WWW-YouTube-Download-0.22$ sudo make test
  21. PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/*/*.t
  22. t/00_compile.t ......... ok  
  23. t/01_simple.t .......... ok  
  24. t/internal/video_id.t .. ok  
  25. All tests successful.
  26. Files=3, Tests=7,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.26 cusr  0.03 csys =  0.32 CPU)
  27. Result: PASS
  28. leo@leo-desktop:~/Descargas/WWW-YouTube-Download-0.22$ sudo make install
  29. Appending installation info to /usr/local/lib/perl5/5.12.0/i686-linux/perllocal.pod
  30. leo@leo-desktop:~/Descargas/WWW-YouTube-Download-0.22$
  31.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Usé lo que me comentaste, haciendo un archivo .par y ver si el módulo está dentro:


Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Escritorio/youdwnperl$ ls -1
  2. icono.jpg
  3. youdwnperl.glade
  4. youdwnperl.pl
  5. youdwnperlscreenShot.jpg
  6. leo@leo-desktop:~/Escritorio/youdwnperl$ zip prueba.par `find /usr/local/lib/ -type f -iname "Download.pm" -print`
  7.   adding: usr/local/lib/perl5/site_perl/5.12.0/WWW/YouTube/Download.pm (deflated 66%)
  8. leo@leo-desktop:~/Escritorio/youdwnperl$ unzip prueba.par -d .
  9. Archive:  prueba.par
  10.   inflating: ./usr/local/lib/perl5/site_perl/5.12.0/WWW/YouTube/Download.pm  
  11. leo@leo-desktop:~/Escritorio/youdwnperl$ find -iname "Download.pm"
  12. ./usr/local/lib/perl5/site_perl/5.12.0/WWW/YouTube/Download.pm
  13. leo@leo-desktop:~/Escritorio/youdwnperl$
  14.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No sé qué pasa.

Saludos.
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026

Re: Calcular dependencias y enpaquetamiento

Notapor explorer » 2011-01-10 13:51 @619

Quizás el directorio donde está el módulo es un poco raro para el PAR. Puedes indicarle la ruta al módulo en la misma línea de comandos del pp:

pp -o you youdwnperl.pl -I /usr/local/lib/perl5/site_perl/5.12.0 -M WWW::YouTube::Download
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Calcular dependencias y enpaquetamiento

Notapor Leo_Gutierrez » 2011-01-10 14:09 @631

Efectivamente, explorer, era la ruta, pero ahora surge otro problema:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Escritorio/youdwnperl$ sudo pp -o you youdwnperl.pl -I /usr/local/lib/perl5/site_perl/5.12.0 -M WWW::YouTube::Download
  2. leo@leo-desktop:~/Escritorio/youdwnperl$ ./you
  3. Can't locate JSON/backportPP.pm in @INC (@INC contains: CODE(0x8ade580) /tmp/par-leo/cache-bda4684c904a1210969bd3a63e0721491228c15c/inc/lib /tmp/par-leo/cache-bda4684c904a1210969bd3a63e0721491228c15c/inc CODE(0x895e9e0) CODE(0x895ece0)) at (eval 31) line 3.
  4. at WWW/YouTube/Download.pm line 13
  5. Compilation failed in require at WWW/YouTube/Download.pm line 13.
  6. BEGIN failed--compilation aborted at WWW/YouTube/Download.pm line 13.
  7. Compilation failed in require at script/youdwnperl.pl line 28.
  8. BEGIN failed--compilation aborted at script/youdwnperl.pl line 28.
  9. leo@leo-desktop:~/Escritorio/youdwnperl$
  10.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No tengo ningún problema en especificarle de nuevo el otro módulo, pero, ¿hay alguna manera de manejar esto sin tanto engorro?, sino tendré que hacerlo así.

Otra duda, ¿puedo generar un .exe desde linux para que corra en Windows?
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026

Re: Calcular dependencias y enpaquetamiento

Notapor explorer » 2011-01-10 14:38 @651

Pues no lo sé. Yo lo que haría sería leer con calma la página de manual de pp, que es de donde he sacado las anteriores respuestas. Si el problema, parece ser que está en localizar las rutas de los módulos, consistiría en agregar más opciones -I con las rutas. Y si no encuentra el módulo, agregarlo con -M. Las rutas te las puedes ahorrar si la variable de entorno PERL5LIB estuviera bien puesta, pero viendo que estás en un Linux, lo normal es que no haga falta ya que el intérprete reconozca los directorios más comunes. Los puedes ver si ejecutas perl -V (al final).

En cuanto a si se puede hacer en Linux y luego ejecutarlo en Windows, sospecho que no, porque pp comprime el intérprete perl, y claro, si es un ejecutable Linux, no funcionará en Windows.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Calcular dependencias y enpaquetamiento

Notapor creating021 » 2011-01-10 14:49 @659

En cuanto a si se puede hacer en Linux y luego ejecutarlo en Windows, sospecho que no, porque pp comprime el intérprete perl, y claro, si es un ejecutable Linux, no funcionará en Windows.

En efecto, así es. También hay que tener en cuenta que pp está empaquetando Gtk2::GladeXML que usa un .xs, lo cual implica código compilado.

Si quieres hacer un ejecutable para Windows, tiene que ser desde Windows y tienes que pensar en las dependencias que tiene tu programa (Glade, Gnome, Gtk+, Glib...) que Windows no trae y hay que instalar para que los módulos funcionen.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Re: Calcular dependencias y enpaquetamiento

Notapor Leo_Gutierrez » 2011-01-10 17:39 @777

Lo he resuelto así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. leo@leo-desktop:~/Escritorio/youdwnperl$ sudo pp -o you youdwnperl.pl -I /usr/local/lib/perl5/site_perl/5.12.0 -M WWW::YouTube::Download -M JSON.pm -M JSON/backportPP.pm
  2.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Gracias a todos.

PD: ¿Si estoy usando un icono para la aplicación, cómo lo añado al paquete?
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026

Re: Calcular dependencias y enpaquetamiento

Notapor explorer » 2011-01-10 19:19 @846

Lo de añadir un icono lo veo más complicado. Para Windows sí que dice el manual de pp cómo agregarlo, pero para Linux, no hay un estándar que indique cómo deben relacionarse los iconos con sus aplicaciones. En los Linux más modernos, lo que hacen es dejar los iconos en directorios públicos, como por ejemplo /usr/share/pixmaps, y luego, según sea el entorno KDE o Gnome (u otros) asociar ese icono a la aplicación, en la configuración del entorno de ventanas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Calcular dependencias y enpaquetamiento

Notapor Leo_Gutierrez » 2011-01-10 19:24 @850

Lo que yo tramaba era mediante el flag "-a" de pp agregarlo al paquete, pero no me funciona, también tengo problemas para agregar el .glade. Creo que tendré que especificar que el ejecutable debe estar en el mismo directorio que los demás archivos.
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 39 invitados