Installare un prodotto add-on
medio
Introduzione
Con Plone 3.0, la community di Plone ha iniziato ad usare nuovi standard per confezionare, distribuire e installare prodotti aggiuntivi per Plone. Invece di inviare prodotti che vengono copiati in una cartella Prodotto "magica" nella propria istanza Zope, i prodotti add-on (e i prodotti che costituiscono lo stesso Plone!) sono ora inviati come elementi Python, che sono installati all'interno dell'istanza di Python che alimenta l'istanza Zope, normalmente via buildout scripts o con l'utility EasyInstall.
Questi nuovi metodi di installazione possono rendere decisamente più semplice installare prodotti add-on in maniera iterativa e consistente. Tuttavia, la community Plone si trova ancora nel mezzo della transizione che porta all'adozione di queste nuove tecniche, esistono quindi ancora prodotti aggiuntivi che richiedono differenti approcci per l'installazione.
Lo scopo di questo documento è fornire un singolo punto di riferimento che copra tutte le comuni tecniche di installazione di prodotti add-on, in tipici scenari d'uso.
Sempre leggere la documentazione del prodotto a cui si è interessati, normalmente in un file README.txt o simili. Il prodotto potrebbe avere specifiche istruzioni per l'installazione, che ovviamente vanno seguite.
Installare prodotti usando buildout
Buildout è uno strumento potente e facile da usare per creare installazioni basate su scripts e ripetibili di Plone, Zope e Python. Gli sviluppatori più avanzati usano attualmente Buildout per creare e gestire i vari sviluppi del loro lavoro con Plone. Da Plone 3.1, l'Unified Installer di Plone inizierà ad usare Buildout, diventando così largamente utilizzato nel lavoro quotidiano degli amministratori di sistemi Plone.
Buildout può essere usato per installare sia prodotti in stile Zope 2 che prodotti basati su egg. Se per l'installazione è disponibile l'alternativa buildout, questa è la modalità consigliata per gestire l'installazione di prodotti add-on.
L'installazione di prodotti add-on con Buildout è documentata nel seguente tutorial:
http://plone.org/documentation/tutorial/buildout/installing-a-third-party-product
Installare prodotti Zope 2-style da un Tarball
Fase 1: Posizionare la directory del Prodotto nella directory "Products" della propria istanza Zope
Sempre usare un'istanza di test, a meno che non si è sicuri che il prodotto è compatibile con le proprie impostazioni di Plone!
Generalmente si scarica un file tipo SomeProduct-0.5.3.tar.gz. Estrarre i contenuti di questo file. In un sistema tipo Unix, si può eseguire:
$ tar -zxvf SomeProduct-0.5.3.tar.gz
In un sistema Windows, usare 7zip o un altro strumento di estrazione zip. Assicurarsi che la struttura della directory venga mantenuta quando si estraggono i contenuti; alcuni strumenti, come WinZip, hanno la propensione a "schiacciare" la struttura dell'archivio compresso, quindi restituendo tutti i file in un'unica directory. In questo caso, è possibile che sia necessario selezionare un'apposita opzione per preservare la struttura quando si estrae l'archivio.
Il risultato dovrebbe essere una directory con struttura simile a questa:
SomeProduct-0.5.3/
SomeProduct/
__init__.py
... o a questa:
SomeProduct/
__init__.py
... La directory SomeProduct/ è la "Product directory", riconoscibile dal file __init__.py. A volte in un singolo archivio possono essere compressi diversi prodotti. Posizionare la directory del prodotto (o le directory) nella directory Products/ della propria istanza Zope. In Windows, la directory dell'istanza è spesso chiamata Data. Attenzione a non usare la directory lib/python/Products.
Assicurarsi che la cartella abbia lo stesso proprietario e gli stessi permessi rispetto agli altri prodotti nell'istanza Zope, e che sia leggibile dall'utente con cui Zope è in esecuzione. Per esempio, lo strumento Unified Installer di Plone gira come utente chiamato "plone", e tutti i prodotti Plone sono proprietà di questo utente. Su *nix e Mac OS X ci si può spostare nella directory Products ed eseguire il comando
sudo chown -R plone *
per impostare il possesso sull'utente "plone" di tutti i file nella cartella Products.
Fase 2: Riavviare Zope
Senza riavviare Zope, non si saprà mai che ci sono dei nuovi prodotti disponibili. Una volta riavviato, i nuovi prodotti appariranno nella sezione Products del pannello di controllo di Zope. Questo significa che il software è ora disponibile e pronto per essere usato nell'istanza Plone (alcuni prodotti a questo punto inizieranno ad agire, come DocFinderTab o qualsiasi cosa che faccia monkeypatching).
Fase 3: Installare il prodotto nel sito web Plone
In ogni sito Plone in cui si vuole installare il prodotto, andare su Site Setup>Add/Remove Products e installare il prodotto.
A questo punto, potrebbere verificarsi un errore (indicato da un punto esclamativo rosso), che in genere significa che è stata tralasciata una dipendenza o che il prodotto stesso non funziona. Assicurarsi di aver letto tutta la documentazione principale. Se ciò succede in una versione rilasciata da poco, potrebbe essere utile contattare l'autore o postare un avviso nel bug tracker del prodotto (se ce n'è uno), ma è importante assicurarsi prima di aver letto tutte le istruzioni.
Installare prodotti basati su egg usando Easy_Install
La maggior parte dei nuovi prodotti add-on per Plone sono ora compressi come egg di Python, modalità che è ora quella standard per comprimere e distribuire tutto il software Python. È possibile installare facilmente prodotti basati su egg usando lo strumento EasyInstall.
Ottenere EasyInstall
EasyInstall è incluso negli installer Windows, OS X, e Unified (Linux/BSD/Unix) di Plone 3.0.x, quindi se Plone è stato installato con uno di questi installer, questa fase del percorso dell'installazione non è necessaria.
Se non si ha ancora EasyInstall sul proprio sistema, leggere e seguire le instruzioni di installazione per EasyInstall. Assicurarsi di installare EasyInstall nella copia di Python che alimenta l'istanza Zope. A seconda della configurazione del proprio server, questa potrebbe anche non essere unica.
Se si sta usando un sistema Python (o uno condiviso) per eseguire Plone, bisogna fare attenzione nell'installare prodotti add-on specifici di Zope e Plone. Potrebbero entrare in conflito con un altro. Se c'è bisogno di usare il sistema Python (o uno condiviso), si può usare virtualenv per tenere sotto controllo questo rischio creando ambienti Python virtuali e isolati per ogni installazione Zope/Plone.
E ora si prosegue!
Una volta ottenuto EasyInstall, si può installare un prodotto add-on basato su egg semplicemente digitando:
easy_install name-of-product
in cui "easy_install" è il percorso intero del comando easy_install per il Python che si sta usando per eseguire Plone. Per gli installer comuni, l'easy_install pre-installato si trova normalmente in una di queste posizioni:
- Windows
- \Plone 3\Python\Scripts\easy_install
- NB: Nel caso dovessi riscontrare errori eseguendo direttamente easy_install, puoi provare a chiamarlo in maniera esplicita, digitando il seguente comando:
- OS X
- Unified Installer (Linux/BSD/Unix)
Se si ha più di una copia di Python nel proprio sistema, potrebbe essere necessario specificare esplicitamente dove EasyInstall deve installare il prodotto. Ciò si può fare con lo switch --prefix. Per esempio, per installare un prodotto nella directory lib/python di un'istanza Zope posizionata in /usr/local/zope210/instance1, digitare:
easy_install --prefix /usr/local/zope210/instance1/lib/python name-of-product
Missione compiuta!
Una volta che il prodotto è stato installato, potrebbe essere utile creare uno slug ZCML per riconoscere ed attivare il prodotto.
Se il prodotto add-on che si sta cercando di installare è parte del namespace Products.* (per esempio se il nome del prodotto è "Products.Something"), Zope lo riconoscerà e userà automaticamente. Ma se il prodotto non è parte di questo namespace (per esempio il nome inizia con qualcosa di diverso da "Products.") sarà allora necessario creare manualmente uno slug ZCML, che è costituito da un'unica riga di codice.
Per creare un slug ZCML per un prodotto add-on:
- Navigare fino alla cartella etc/package-includes della propria istanza Zope.
- Creare un file chiamato "nameofyourproduct-configure.zcml"
- Inserire la seguente riga di codice nel file:
<include package="name.of.product" file="configure.zcml" /> Per esempio, per creare uno slug ZCML per un prodotto chiamato "plone.portlet.static", si crea un file chiamato "plone.portlet.static-configure.zcml" con il seguente contenuto
<include package="plone.portlet.static" file="configure.zcml" />
Ulteriori informazioni
http://plone.org/documentation/tutorial/buildout/packages-products-and-eggs
