Facciamo nostri i buildout!
medio
Gli installer sono meravigliosi, ma non è semplice controllarne e manipolarne il comportamento.
I sorgenti non sono male, ci abbiamo convissuto serenamente per anni, usandoli come più ci faceva comodo.
I buildout promettono di risolverci la vita.. ma dopo un primo approccio amichevole, tendenzialmente ci sentiamo persi in mezzo a un nuovo mare di cose da sapere prima di poterli usare al meglio. Vediamo di fare qualche bracciata insieme in questo bellissimo mare!
Come qualcuno ci ha già spiegato al meglio, buildout è solo uno dei nuovi meccanismi introdotti per gestire al meglio le nostre istanze, almeno un altro paio ce li troviamo nel mezzo, ma si tratta di altri mari, e per ora li daremo per scontati: eggs e workingenv/virtualenv.
Cosa fa per noi buildout? Semplice: automazione. Chiunque abbia predisposto un'istanza Plone dai pacchetti di base sa che il processo non è complesso, ma lungo e piuttosto meticoloso:
- scarica tutti i pacchetti necessari (zope alla versione giusta, plone e il suo bundle alla versione che ci interessa, pacchetti aggiuntivi, ..);
- installa Zope dove utile;
- genera un'istanza Zope per il nostro Plone;
- carica nell'istanza appena creata i pacchetti del bundle Plone;
- carica nell'istanza anche i pacchetti aggiuntivi;
- configura il file zope.conf dell'istanza come serve.
Questa è la scaletta minimale, che solitamente porta via diverse decine di minuti, e che potrebbe introdurre errori nel momento in cui qualcosa non segue il suo corso (versioni sbagliate, pacchetti mancanti, ..); buildout non fa altro che seguire tale ricetta per noi, leggendo un file di configurazione in cui vengono descritti i vari passi nella maniera più sintetica e lineare possibile.
Se date uno sguardo ai file di configurazione di ploneout, vi rendete conto che non fanno molto più di quanto sinteticamente descritto nella lista precedente.
E fin qui tutto bene.
Volendo cominciare a capire come fare "nostro" buildout, un paio di compiti semplici potrebbero essere i seguenti:
- fare in modo che venga usato uno Zope che noi già abbiamo disponibile sulla nostra macchina;
- fare in modo che anche i pacchetti del bundle Plone vengano presi da una cartella già presente sulla nostra macchina.
Chiaramente la soluzione è mediamente facile, e solo per chi non sapesse rispondere da solo la propongo alla fine; per ora mi interessa solo farvi notare dove risiede il centro vitale di buildout!
Come facilmente intuibile, il trucco non è tanto in dei file di configurazione, ma nelle logiche che quei parametri prendono come base di partenza per eseguire quel che gli chiediamo di fare: le ricette!
Le ricette non sono altro che degli script (Python) capaci di trasformare i nostri parametri in azioni concrete. Esistono ricette di vario tipo già belle e pronte da utilizzare, o per chi va oltre, si possono costruire le proprie.
Detto questo siamo quasi pronti a scoprire la soluzione, che dovrebbe essere evidente dopo aver dato uno sguardo alla pagina di aiuto della principale ricetta usata da ploneout: zope2instance.
Da tale pagina avete un quadro d'insieme dei vari parametri che potrete usare nel vostro buildout.cfg, tra cui "zope2-location" e "products", che sono le chiavi per risolvere il problema posto, insieme alla disabilitazione della parte del buildout in cui viene eseguita l'installazione dello Zope server.
Alla prossima, e postate i vostri buildout!
vedi anche:
-
Gestire progetti Plone con zc.buildout
- Scopri gli egg, setuptools e la gestione delle dipendenze, e come usare zc.buildout in Plone per predisporre un ambiente di sviluppo.
-
Info dettagliate sui buildout
- Questo documento ti aiuterà a creare automaticamente un'istanza Zope 2.9 con Plone 2.5 installato. Utile come punto di partenza nel caso si voglia creare un proprio buildout con software particolari o per un un veloce deployement di proprie applicazioni su più macchine.
-
Installare Plone usando buildout
- Come creare automaticamente un'istanza Zope 2.9 con Plone 2.5 installato in pochi passi.
-
Ricette per buildout
- Chi comprende il significato del titolo troverà il link piuttosto utile :)
