2006/12/19 00:35:39.884 US/Eastern

Installare Twisted & Zope3 su Window

L' installazione di Zope 3 effettuata utilizzando l' installer per windows, nel caso in cui sia gia' presente una installazione di Twisted, sovrascrive il package costringendo ad utilizzare una vecchia versione di Twisted (la 2.1.0).
Questa cosa non e' ovviamente accettabile se si ha interesse ad utilizzare (magari all' interno di un addon Zope) l' ultima release stabile di Twisted (la 2.4.0).

Potrebbe risultare anche utile potere installare versioni ancora piu' recenti di Twisted:
infatti, essendo un  progetto con uno sviluppo molto intenso, le versioni Twisted scaricate direttamente dall' SVN contengono sempre dei miglioramenti o delle aggiunte (come ad es. AMP).
 
La soluzione al nostro problema passa attraverso l' installazione  Zope3 a partire da una versione modificata dei sorgenti; quindi e' necessario avere a disposizione un compilatore per Windows:
se non si dispone di un ambiente di sviluppo Microsoft bisognera' seguire le istruzioni riportate in un precedente post.

Sistemato il problema del compilatore, andiamo a vedere il funzionamento della procedura di installazione di Zope3 a partire dai sorgenti:
  • l' installazione avviene tramite un modulo, install.py, che ridefinisce l' interfaccia al modulo standard distutils (richiamando il package zpkgsetup contenuto nella sotto directory  Support);
  • le varie componenti (che poi sono delle directory) da installare si trovano nella sotto directory Dependencies e viene utilizzato un standard per il loro nome (<nome componente>-<versione di Zope>) in modo che si possano installare solo i componenti relativi alla corretta versione di Zope;
Bisogna, a questo punto, risolvere due problemi:
  • non far installare il componente dal nome twisted-Zope-3.3.0 (da non confondere con quello che invece si chiama zope.app.twisted-Zope-3.3.0), che e' quello che causa la sovrascrittura del modulo Twisted;
  • eliminare una monkey patch, presente nel componente zope.app.twisted-Zope-3.3.0, non piu' necessaria in quanto relativa alla vecchia versione  del modulo twisted.web2 installato con il componente  precedente (ma che causa, anzi, un problema durante l'avvio del server).
Si procede quindi nella seguente maniera:
  • si cancella o si rinomina (cambiando la parte finale) il componente twisted-Zope-3.3.0;
  • si commenta il metodo locateChild() della classe PreBuffer presente nel modulo zope.app.twisted.http.py contenuto nella sotto directory zope.app.twisted del componente zope.app.twisted-Zope-3.3.0;
Prima di procedere oltre e' bene ripulire, cancellando i package dalla directory site-packages e/o eseguendo l' unistaller, le eventuali precedenti installazioni di Zope3 e Twisted.

A questo punto si puo' eseguire l' installazione di Zope:
  • python install.py build (eventualmente  con l' opzione --compiler=mingw32);
  • python install.py install;
che installa tutto quello che riguarda Zope3 tranne Twisted.

Nella installazione di Twisted si possono, invece, seguire due strade:
  • la prima prevede di scaricare una vesione aggiornata dall' SVN ed  installare quella;
  • la seconda prevede che l' installazione avvenga utilizzando l' installer disponibile per Twisted 2.4.0;
Nel primo caso il lavoro da svolgere e' abbastanza banale:
  •  python setup.py build (eventualmente  con l' opzione --compiler=mingw32);
  • python setup.py install;
Nel secondo caso la faccenda e' complicata dal fatto che Zope3 utilizza il package twisted.web2 che non e' compreso nell' insieme dei moduli installati dal programma di installazione; e' necessario quindi:
Da notare, infine, che l' installazione su Linux (sicuramente su Ubuntu 6.06 Dapper Drake ma,  probabilmente, anche altre versioni) di Zope3 e Twisted 2.4  non da' tutti questi problemi in quanto e' possibile installare versioni aggiornate di Zope e di Twisted in maniera separata.

Posted by: swarzy.2006/12/19 00:35:39.884 US/Eastern
Tags: zope3 windows linux twisted ubuntu zope dapper | Permalink

Post a comment





The CAPTCHA image

Please enter the letters shown in the image in the following text box. Provided by Captchas.net