Newsgroup: it.comp.lang.perl
Titolo: crontab, perl ed errori di installazione

ciao a tutti,
ecco qui il problema che ho.
Sto cercando di mettere in crontab una serie di script (bash e) perl
che ho realizzato su un sistema Sun Sparc
mi sono spulciato un po' di documentazione per il funzionamento del
cron, e credevo di aver settato tutto correttamente.
In effetti, se metto in cron uno script perl di test che non fa nulla
di particolare tutto funziona. Ho dei problemi per script che
utilizzano specifici moduli:
Net::FTP
e Archive::Zip
ecco gli errori che mi vengono generati:
*	ERRORE GENERATO DAL NET::FTP
Errno architecture (sun4-solaris-2.10) does not match executable
architecture (sun4-solaris-64int-2.10) at /usr/local/lib/perl5/5.8.8/
sun4-solaris/Errno.pm l
ine 11.
Compilation failed in require at /usr/local/lib/perl5/5.8.8/sun4-
solaris/IO/Socket.pm line 17.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.8.8/sun4-
solaris/IO/Socket.pm line 17.
Compilation failed in require at /usr/local/lib/perl5/5.8.8/Net/FTP.pm
line 18.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.8.8/Net/
FTP.pm line 18.
Compilation failed in require at /beta80lib/
testcron.pl
 line 20.
BEGIN failed--compilation aborted at /beta80lib/
testcron.pl
 line 20.
*	ERRORE GENERATO DA ARCHIVE::ZIP
   is only avaliable with the XS version at /usr/local/lib/perl5/
site_perl/5.8.8/Compress/Zlib.pm line 9
BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/
5.8.8/Compress/Zlib.pm line 9.
Compilation failed in require at /usr/local/lib/perl5/site_perl/5.8.8/
Archive/Zip.pm line 11.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/
5.8.8/Archive/Zip.pm line 11.
Compilation failed in require at /beta80lib/
doutils.pm
 line 20.
BEGIN failed--compilation aborted at /beta80lib/
doutils.pm
 line 20.
Compilation failed in require at /beta80lib/engineFtp.pl line 26.
BEGIN failed--compilation aborted at /beta80lib/engineFtp.pl line 26.
#####
La cosa è strana perchè gli script lanciati da linea di comando vanno
perfettamente, il che mi fa pensare che i moduli sono stati installati
correttamente, e che si tratti di un problema di PATH. Però ho provato
a riprodurre il PATH nel .profile dell'utente, inserendo gli indirizzi
sia nel file CRON di default, sia inserendo le stesse informazioni
anche in un file esterno che fa l'esport di tutti i path di interesse.
Ho provato ad usare anche "use lib" specificando i path dei vari
moduli, ma anche così non cambia nulla.
lo script che sto testando è ridotto all'osso:
#!/usr/local/bin/perl
`. /home/fittipas/fileconfig`;
use lib "/usr/local/lib/perl5/site_perl/5.8.8";
use lib "/usr/local/lib/perl5/5.8.8/sun4-solaris";
use lib "/usr/local/lib/perl5/5.8.8";
use IO::Handle;
use Net::FTP;
use Archive::Zip;
print "ciao\n";
di cosa si può trattare?
grazie!

Potrebbe darsi che c'è qualche altra variabile d'ambiente che ti
serve? Da quel che so, l'esecuzione in crontab ti dà variabili
differenti e/o non impostate (la più eclatante delle quali è PATH),
per cui potresti avere problemi. Dal primo errore, direi che si sta
provando ad utilizzare una libreria a 32 bit mentre a te ne serve una
a 64, non è che nel tuo ambiente "normale" hai qualcosa che indica
questo?
Inoltre, la riga `. /path/to/file` probabilmente non fa quello che
speri.
Come prova brutale, puoi salvarti l'ambiente completo di quando sei in
shell:
shell$ (echo '#!/bin/bash'; env | sed 's/^/export /') > prova.sh
e poi lanciare lo script Perl dal fondo di prova.sh:
#!/bin/bash
#
# ... tutte le variabili di ambiente, con export...
#
perl /path/to/
script.pl
 "$@"
Se prova.sh ti funziona da crontab, comincia a cancellare le variabili
ad una ad una e vedi quelle di cui hai realmente bisogno. Non sono
sicuro che tu possa impostare le variabili che ti interessano per
questo problema da dentro lo script Perl, puoi provare lavorando su
%ENV.
Ultima cosa: sei sicuro che quando sei in shell utilizzi /usr/local/
bin/perl?
Sono solo 2 eurocent... ma meglio di niente no? :)
   Flavio.

 bin/perl?
questo è giusto, il sistemista mi ha piazzato l'ultima versione del
perl sotto local...
GRAZIE!
ora faccio ancora qualche test, ma almeno ho uno spiraglio di speranza
:-)