Bookmark and Share
Document Actions

Installare un prodotto estensione
medio

Come installare un nuovo pacchetto usando questi strumenti

L'installazione di un nuovo prodotto estensione dipenderà dal fatto che sia distribuito come un egg o come un prodotto Zope 2 classico.

Installare un prodotto Zope 2 classico

Il modo più semplice per sperimentare un prodotto Zope 2 classico consiste nell'estrarlo all'interno della cartella products/ del buildout. Se leggi la documentazione relativa alla cartella Products/ di una istanza Zope, questa è la stessa cosa.

Tuttavia questo approccio rende più difficile ridistribuire il tuo progetto e condividerlo con altri sviluppatori. Spesso è più facile mantenere il controllo se si lascia che buildout scarichi e installi il pacchetto per te. Puoi farlo con la sezione [productdistros] di buildout.cfg. Ad esempio, ecco come potresti installare DocFinderTab e CacheFu per il tuo progetto:

[productdistros]
recipe = plone.recipe.distros
urls =
    http://www.zope.org/Members/shh/DocFinderTab/1.0.2/DocFinderTab-1.0.2.tar.gz
    http://plone.org/products/cachefu/releases/1.1/CacheFu-1.1.tgz
nested-packages =
    CacheFu-1.1.tgz
version-suffix-packages =

Nota che CacheFu viene distribuito come una singola cartella contenente un numero di prodotti in sotto-cartelle, perciò lo elenchiamo sotto nested-packages.

Come sempre, se modifichi buildout.cfg, devi ri-eseguire buildout:

$ ./bin/buildout

Installare un egg

Finchè un egg ha una release in Cheese Shop o altrove, buildout può scaricarlo e installarlo, inclusa qualsiasi dipendenza esplicitamente specificata. Basta elencare l'egg, e opzionalmente una versione (altrimenti otterrai l'ultima disponibile), nell'opzione eggs.

[buildout]
...
eggs = 
    elementtree
    borg.project>=1.0b1,<2.0dev

Se vuoi che buildout utilizzi un indice ulteriore rispetto a quello di Cheese Shop, puoi aggiungere una URL a find-links che contiene i link di download per gli egg. In effetti abbiamo già visto un esempio di questo: elementtree si trova in http://effbot.org/downloads, non direttamente nel Cheese Shop. Quindi dovremo specificare:

[buildout]
...

find-links =
    http://dist.plone.org
    http://download.zope.org/ppix/
    http://download.zope.org/distribution/
    http://effbot.org/downloads

eggs =
    elementtree

Abbiamo anche elencato alcune delle locazioni di download per egg di Zope e Plone.

Riesegui ancora buildout per fare in modo che i cambiamenti abbiano effetto:

$ ./bin/buildout

Egg di sviluppo

Se non esiste una release per il tuo egg, o vuoi tracciare un egg in Subversion, estrailo nella cartella src/ . Fai in modo di ottenere l'egg completo, incluso il file di primo livello setup.py . Ad esempio, per ottenere il trunk di sviluppo di plone.portlets, esegui:

$ cd src
$ svn co https://svn.plone.org/svn/plone/plone.portlets/trunk plone.portlets

Quindi aggiungi quanto segue a buildout.cfg:

[buildout]
...
eggs =
    ...
    plone.portlets

develop =
    src/plone.portlets

Nota che:

  • L'opzione develop contiene un path relativo verso il punto in cui l'egg sorgente è installato. Buildout si aspetta di trovare un setup.py coerente in questa cartella.
  • Gli egg di sviluppo hanno sempre precedenza sugli egg normali.
  • Dovrai ancora elencare il nome dell'egg nell'opzione eggs per fare in modo che venga installato.
  • Se stai facendo override di un egg che viene distribuito con Plone, potresti doverlo elencare nella sezione eggs della parte [plone] piuttosto:
[buildout]
...
develop =
    src/plone.portlets

...

[plone]
recipe = plone.recipe.plone
eggs = 
    plone.portlets

Questo perchè plone.recipe.plone è molto esplicito riguardo a quali versioni dei suoi vari egg devono essere usate, per fare in modo che  Plone venga eseguito nel modo in cui è stato rilasciato.

Le ricette Buildout (come ad esempio plone.recipe.plone) sono distribuite sotto forma di egg. Puoi usare un egg di sviluppo di una ricetta elencandolo sotto l'opzione develop. Non c'e' bisogno di elencarlo esplicitamente sotto l'opzione eggs, dato che è referenziato dall'opzione recipe della parte rilevante.

Gestire file ZCML

E' importante comprendere che Zope non caricherà automaticamente file configure.zcml per i pacchetti che non si trovano nel namespace Products.*. Piuttosto devi referenziare esplicitamente il pacchetto. Buildout può creare tali referenze (note come slug ZCML) con l'opzione zcml sotto la parte [instance]. Ecco come assicurarsi che borg.project sia disponibile in Zope:

[buildout]
...
eggs =
    elementtree
    borg.project

...

[instance]
...
zcml = 
    borg.project

Dovessi avere bisogno di caricare un overrides.zcml o un meta.zcml, puoi usare una sintassi come la seguente:

zcml =
    some.package
    some.package-overrides
    some.package-meta

Prodotto Policy

Molti sviluppatori preferiscono creare un singolo "prodotto policy" (noto anche come "prodotto deployment") che orchestra le varie dipendenze. Se hai un tale prodotto potresti voler includere varie dipendenze direttamente dal file configure.zcml del prodotto policy,  con righe simili alle seguenti:

<configure xmlns="http://namespace.zope.org/zope">

    <include package="borg.project" />

</configure>

In questo caso potresti anche aver bisogno di uno slug (usando l'opzione zcml come sopra descritto) per il prodotto policy.

 
by Maurizio Delmonte last modified 2008-12-12 18:32
Contributors: Martin Aspeli