Newsgroup: it.comp.lang.perl
Titolo: Installare GD

Sto disperatamente cercando per la ennesima volta di installare il
modulo GD sia su windows sia su linux ma questo modulo sembra essermi
avverso...
Provo a compilare o usando il tool linux -MCPAN o quello windows PPM ma
il problema è sempre in agguato.
Giusto per circorscivere il problema prendiamo la mia distro linux...
Scarico => 'ok'
perl MakeFile=>'ok'
make=>'problema'
Sotto riporto le varie fasi dalla scrittura del MakeFile in avanti.
Avete qualche idea??
Il DBD::Chart in un recente post mi stuzzica moltissimo!!
Writing Makefile for GD
cp GD/Polyline.pm blib/lib/GD/Polyline.pm
cp 
qd.pl
 blib/lib/
qd.pl
cp GD.pm blib/lib/GD.pm
AutoSplitting blib/lib/GD.pm (blib/lib/auto/GD)
cp GD/Simple.pm blib/lib/GD/Simple.pm
/usr/bin/perl /usr/share/perl/5.8/ExtUtils/xsubpp  -typemap
/usr/share/perl/5.8/ExtUtils/typemap -typemap typemap  GD.xs > GD.xsc &&
mv GD.xsc GD.c cc -c  -I/usr/include -I/usr/include/gd -D_REENTRANT
-D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2  
-DVERSION=\"2.19\" -DXS_VERSION=\"2.19\" -fPIC
"-I/usr/lib/perl/5.8/CORE"  -DHAVE_JPEG -DHAVE_FT -DHAVE_XPM -DHAVE_PNG
-DHAVE_ANIMGIF GD.c GD.xs: In function `newDynamicCtx':
GD.xs:440: error: structure has no member named `gd_free'
GD.xs: In function `gd_cloneDim':
GD.xs:460: error: structure has no member named `alpha'
GD.xs:460: error: structure has no member named `alpha'
GD.xs:466: error: structure has no member named `thick'
GD.xs:466: error: structure has no member named `thick'
GD.xs: In function `XS_GD__Image_newFromPngData':
GD.xs:604: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromGdData':
GD.xs:628: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromGd2Data':
GD.xs:645: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromJpegData':
GD.xs:665: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromWBMPData':
GD.xs:690: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_copyRotate90':
GD.xs:1211: error: invalid lvalue in assignment
GD.xs:1211: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyRotate180':
GD.xs:1232: error: invalid lvalue in assignment
GD.xs:1232: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyRotate270':
GD.xs:1253: error: invalid lvalue in assignment
GD.xs:1253: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyFlipHorizontal':
GD.xs:1274: error: invalid lvalue in assignment
GD.xs:1274: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyFlipVertical':
GD.xs:1295: error: invalid lvalue in assignment
GD.xs:1295: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyTranspose':
GD.xs:1316: error: invalid lvalue in assignment
GD.xs:1316: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyReverseTranspose':
GD.xs:1337: error: invalid lvalue in assignment
GD.xs:1337: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_rotate180':
GD.xs:1357: error: invalid lvalue in assignment
GD.xs:1357: error: invalid lvalue in assignment
GD.xs:1358: error: invalid lvalue in assignment
GD.xs:1358: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_flipHorizontal':
GD.xs:1375: error: invalid lvalue in assignment
GD.xs:1375: error: invalid lvalue in assignment
GD.xs:1376: error: invalid lvalue in assignment
GD.xs:1376: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_flipVertical':
GD.xs:1393: error: invalid lvalue in assignment
GD.xs:1393: error: invalid lvalue in assignment
GD.xs:1394: error: invalid lvalue in assignment
GD.xs:1394: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_stringFT':
GD.xs:2107: error: `gdFTStringExtra' undeclared (first use in this
function) GD.xs:2107: error: (Each undeclared identifier is reported
only once GD.xs:2107: error: for each function it appears in.)
GD.xs:2107: error: syntax error before "strex"
GD.xs:2126: error: `strex' undeclared (first use in this function)
GD.xs:2130: error: `gdFTEX_LINESPACE' undeclared (first use in this
function) GD.xs:2134: error: `gdFTEX_CHARMAP' undeclared (first use in
this function) GD.xs:2136: error: `gdFTEX_Unicode' undeclared (first use
in this function) GD.xs:2138: error: `gdFTEX_Shift_JIS' undeclared
(first use in this function) GD.xs:2140: error: `gdFTEX_Big5' undeclared
(first use in this function) GD.xs:2162: warning: assignment makes
pointer from integer without a cast GD.xs: In function
`XS_GD__Font_DESTROY': GD.xs:2382: warning: comparison between pointer
and integer GD.xs:2383: warning: comparison between pointer and integer
GD.xs:2384: warning: comparison between pointer and integer
GD.xs:2385: warning: comparison between pointer and integer
GD.xs:2386: warning: comparison between pointer and integer
GD.xs: In function `XS_GD__Font_Small':
GD.xs:2398: warning: assignment makes pointer from integer without a
cast GD.xs: In function `XS_GD__Font_Large':
GD.xs:2409: warning: assignment makes pointer from integer without a
cast GD.xs: In function `XS_GD__Font_Giant':
GD.xs:2420: warning: assignment makes pointer from integer without a
cast GD.xs: In function `XS_GD__Font_MediumBold':
GD.xs:2431: warning: assignment makes pointer from integer without a
cast GD.xs: In function `XS_GD__Font_Tiny':
GD.xs:2442: warning: assignment makes pointer from integer without a
cast make: *** [GD.o] Error 1
  /usr/bin/make  -- NOT OK
Running make test
  Can't test without successful make
Running make install
  make had returned bad status, install seems impossible
-- 
nathanvi
ICQ --> 20318568
mail --> vitto.z A_T 
tiscali.it
sito --> 
http://www.centrostudiraffaello.it/sito/

 GD.xs:466: error: structure has no member named `thick'
Ti mancano diversi pacchetti.
Oltre a GD (intendo il pacchetto non il modulo Perl) e a libgd ti servono le 
librerie "devel" per JPEG, XPM, PNG, e altri formati.
E' un problema in cui mi sono scontrato anche io diverse volte, per far 
funzionare bene tutto hai bisogno di installare una valanga di pacchetti (le 
cui dipendenze spesso non sono chiarissime).

Appena arriverò a casa proverò a installare i vari pacchetti e
librerie devel...
Nel frattempo, essendo in ufficio e lavorando in win ho provato a
cercare GD su ppm ma non l'ho trovato... Come posso fare?
Dove posso trovare la sorgente per PPM che abbia le GD?
Ho anche provato a usare il metodo perl MakeFile.pl etc ma... mi chiede
sempre le librerie che sebbene siano state scaricate dal sito
(
http://www.boutell.com/gd/
) continuano a non piacergli...
Qualcuno sa dirmi come fare vedere le GD tramite PPM in windows???
Questo maledetto modulo mi sta facendo diventare matto!


Calma, calma, GD si installa senza alcun problema sia sotto Windows che 
sotto Linux, basta evitare di complicarsi la vita ;-)
Windows:
1. hai installato ActivePerl della ActiveState, vero?
2. Scarica PPM::Repositories da CPAN:
http://search.cpan.org/~podmaster/PPM-Repositories-0.11/
ed esegui lo snippet della synopsis (togliendo i commenti, come 
specificato), che aggiunge automaticamente i vari repository PPM 3 alla 
tua configurazione, oppure stampa i repository a video (sempre eseguendo 
il codice della synopsis), o ancora cercali nel codice sorgente, e poi 
aggiungili a manella uno ad uno mediante il comando "rep add" di ppm.
3. Esegui "search GD" da ppm e poi installa la versione che più ti 
aggrada (la più recente disponibile è la 2.23).
Linux:
Io adopero Debian che, mediante il suo meraviglioso package manager 
(apt) risolve automaticamente le dipendenze, per cui per installare GD è 
sufficiente il singolo comando:
apt-get install libgd-gd2-perl
(ci sono anche fron-end visuali per apt che rendono la vita ancora più 
semplice).
Per altre distribuzioni Linux ti consiglio comunque di utilizzare la 
specifica versione pacchettizzata (binaria) di GD, oppure di utilizzare 
il package manager (tutte le distribuzioni Linux più diffuse ne hanno 
uno) per trovare le dipendenze di GD.
Infine un consiglio (non richiesto): adopera GD::Graph (e GD::Graph3d) 
anziché DBD::Chart: io li ho adoperati entrambi e ritengo il primo 
abbastanza più flessibile e potente (per le mappe puoi abbinarvi 
GD::Graph::Map).
Ciao,
Emanuele.

 GD::Graph::Map).
Non richiesto? Scherzi? Mi stai aiutando moltissimo.
Ho ancora un problemino su questi moduli.
Dopo aver installato GD ho anche provato con GD::Graph e Graph3D.
Li cerco, li trovo, vado di install ma facendo ciò mi dice:
"Error: no suitable implementation found for 'GDGraph'"
Cosa significa?
Come posso risolvere questo ultimo problema?

 Come posso risolvere questo ultimo problema? 
Fortunatamente in questo caso specifico non è un problema, dal momento 
che quelli in oggetto sono tutti moduli pure-perl (al contrario di GD), 
per cui puoi installarli tranquillamente mediante cpan/cpanp oppure a 
manella dopo averli scaricati individualmente da CPAN, fregandotene di ppm.
Il messaggio d'errore di ppm che hai riportato è spesso non attendibile, 
e si aggira installando i moduli mediante la sequenza search 
<nome-modulo> seguito da install <numero-modulo-trovato> (provando ad 
esaustione tutte le versioni trovate per un certo modulo), piuttosto che 
con il metodo diretto install <nome-modulo>.
Il messaggio è comunque relativo al fatto che i pacchetti disponibili 
trovati da ppm sono stati compilati per una versione o configurazione di 
perl diversa da quella che hai installato (ad esempio il modulo è stato 
compilato per perl threaded mentre tu hai installato un perl 
non-threaded etc.)
Però sembra che ppm non riesca a tenere conto di tutte le versioni 
disponibili di un dato modulo/pacchetto, da cui l'inattendibilità 
dell'errore ed il workaround di cui sopra.
Per concludere, il metodo che uso io sotto Windows è il seguente: prima 
provo ad installare il modulo mediante cpan (o, meglio ancora, cpanp). 
Se va bene OK (e se è un modulo pure-perl va quasi sempre bene); se non 
va bene, ricorro al corrispondente pacchetto PPM (sperando che esista).
In altre parole privilegio cpan e ricorro a ppm solo quando sono 
veramente obbligato a farlo.
Non è detto che sia la strategia migliore da seguire, beninteso...
Ciao,
Emanuele.

 1. hai installato ActivePerl della ActiveState, vero?
Ciao. Io invece faccio così, se può aiutarti (su ActivePerl 5.8.0.804)
      ppm> rep add Kobes 
http://theoryx5.uwinnipeg.ca/ppms
      ppm> rep add Bribes 
http://www.Bribes.org/perl/ppm
      ppm> search GD
      ppm> install <number>
...Where <number> corresponds to the relevant package and version from the
numbered list obtained above.
spero ti sia utile...
Stefano