Una ``distribuzione precompilata'' è quello che si intende pensando o a ``pacchetti di binari'' o ad un ``installer'' (dipendente dal background). Non è necessariamente binario, perché potrebbe contenere solo codice sorgente Python e/o byte-code; e non lo si chiama package, perché quella parola è già usata in Python. (E ``installer'' è un termine specifico nel mondo dei principali sistemi desktop).
Una distribuzione precompilata è il modo di rendere la vita facile agli installatori della distribuzione del vostro modulo: per utenti di sistemi Linux basati su RPM si tratta di un binario RPM; per gli utenti Windows, si tratta di un installer eseguibile; per gli utenti Linux basati su Debian, è un package Debian; e così via. Ovviamente, nessuna persona sarà in grado di creare distribuzioni per ogni piattaforma esistente, così le Distutils sono state progettate per permettere agli sviluppatori di moduli di concentrarsi sulla loro specialità--scrivere codice e creare la distribuzione sorgente--quando una figura intermedia chiamato packager si occupa di trasformare la distribuzione sorgente in distribuzioni compilate per tante piattaforme quanti sono i packagers.
Normalmente, lo sviluppatore di moduli può essere proprio il
packagers; o il packager potrebbe essere un volontario ``esterno''
che ha accesso alla piattaforma a cui non non ha accesso lo
sviluppatore; o potrebbe essere una persona che periodicamente
recupera la nuova distribuzione sorgente e la trasforma nella
distribuzione compilata per tutte le piattaforma a cui ha
accesso. Indipendemente da chi sia, un packager usa lo script di setup
e l'insieme dei comandi bdist
per generare distribuzioni
compilate.
Come semplice esempio, se si esegue il seguente comando nella directory principale dei sorgenti di Distutils:
python setup.py bdist
le distutils compilano la propria distribuzione di moduli (in questo caso le proprie Distutils), realizzando un'installazione ``fasulla'' (anche nella directory build, e creano il tipo predefinito della distribuzione compilata per la propria piattaforma. Il formato predefinito per le distribuzioni compilate è un stupido file tar su Unix ed un semplice installer eseguibile su windows. (Quel file tar viene considerato ``stupido'' perché deve essere scompattato in una specifica locazione per fare in modo che lavori.)
Comunque, il citato comando in un sistema Unix crea
Distutils-1.0.plat.tar.gz; scompattando questo file
tarball nella giusta posizione, installa le Distutils come se fosse
stato codice scaricato e su cui viene eseguito python setup.py
install
. (Il ``posto giusto'' è o la root del filesystem o la
directory Python prefix, a seconda dell'opzione data al
comando bdist_dumb
: quella predefinita crea la
distribuzione stupida relativamente a prefix.)
Ovviamente, per le distribuzioni in puro Python, questo non è altro
che l'esecuzione di python setup.py install
--ma per le
distribuzioni non pure, che includono estensioni che hanno la
necessità di essere compilate, può significare la differenza tra
coloro che sono in grado di usare le proprie estensioni e chi no. La
creazione di distribuzioni compilate ``smart'', come un package RPM o
un installer eseguibile per Windows è spesso più conveniente per gli
utenti, anche se la propria distribuzione non contiene alcuna
estensione.
Il comando bdist
ha un'opzione --formats
simile al comando sdist
, che si può usare per selezionare il
tipo di distribuzione compilata da generare: per esempio,
python setup.py bdist --format=zip
può, quando eseguito su di un sistema Unix, creare Distutils-1.0.plat.zip--ancora, questo archivio dovrebbe venir scompattato nella directory principale per installare le Distutils.
I formati disponibili per distribuzioni già pronte sono:
Formato | Descrizione | Note |
---|---|---|
gztar |
file tar gz (.tar.gz) | (1),(3) |
ztar |
file tar compresso (.tar.Z) | (3) |
tar |
file tar (.tar) | (3) |
zip |
file zip (.zip) | (4) |
pkgtool |
Solaris pkgtool | |
sdux |
HP-UX swinstall | |
rpm |
RPM | (5) |
wininst |
autoestrattore per file ZIP per Windows | (2),(4) |
Note:
rpm --version
per sapere quale versione si
sta usando)
Non si deve necessariamente usare il comando bdist
con
l'opzione --formats; si può anche usare il comando che
direttamente implementa il formato a cui si è interessati. Alcuni di
questi ``sottocommandi'' bdist
generano attualmente diversi
formati simili: per inciso, il comando bdist_dumb
genera
tutti i formati archivio ``stupido'' (tar
, ztar
,
gztar
e zip
) ed il sotto-comando bdist_rpm
genera sia gli RPM binari che sorgenti. I sottocomandi
bdist
ed il formato generato da ciascuno sono:
Comando | Formato |
---|---|
bdist_dumb |
tar, ztar, gztar, zip |
bdist_rpm |
rpm, srpm |
bdist_wininst |
wininst |
La seguente sezione fornisce dettagli su ogni comando individuale
bdist_*