Debianizzare un programma Python
La guida completa alla realizzazione di un pacchetto deb secondo gli standard Debian, dalla pacchettizzazione fino all’accettazione nei repository ufficiali Debian.
- #0 Introduzione
- #1 Dare una struttura sensata al pacchetto
- #2 Inserire i copyright in tutti i files sorgente
- #3 Aprire una richiesta di pacchettizzazione (ITP)
- #4 Attendere la conferma di ricezione della richiesta ITP
- #5 setup.py per distutils
- #6 Installazione degli strumenti
- #7 Preparazione della struttura debian
- #8 Creazione della directory debian
- #9 Configurazione della directory debian (file changelog)
- #10 Configurazione della directory debian (file control)
- #11 Configurazione della directory debian (file copyright)
- #12 Configurazione della directory debian (file rules)
- #13 Configurazione della directory debian (file compat)
- #14 Configurazione della directory debian (file watch)
- #15 Configurazione della directory debian (file pycompat)
- #16 Configurazione della directory debian (file pyversions)
- #17 Compilazione iniziale del pacchetto
- #18 Visione dei files ottenuti
- #19 Verifica dei pacchetti
- #20 Compilazione definitiva del pacchetto (I)
- #21 Creazione di una chiave crittografica
- #22 Compilazione definitiva del pacchetto (II)
- #23 Alla ricerca di uno sponsor – Introduzione
- #24 Alla ricerca di uno sponsor – Debian Mentors
- #25 Alla ricerca di uno sponsor – PAPT e PMPT
- #26 Il pacchetto fa il suo ingresso in Debian
- #27 Il pacchetto viene accettato in Debian unstable
- #28 Migrazione da Debian unstable a testing
- La guida completa scaricabile
Nella parte del file ‘rules’ devo fare una precisazione, così come è fa fallire la pacchettizzazione se il percorso del file presenta spazi.
il percorso di quale file?
dei files da installare se ne occupa distutils, se provoca errori questo significherebbe che c’è un bug in debhelper?
puoi postare un caso concreto?
Pardon, effettivamente l’ho omesso.
Se la cartella ‘programma_versione’ che si vuole ‘compilare’ si trova in un persorso con spazi (es. /home/nome/Scrivania/programma gespeaker/gespeaker-0.7), il file rules spezza tale percorso in più parti, generando errore.
ma questo non c’entra con rules.
se il percorso contiene spazi devi scriverlo come se lo scrivessi nella shell:
/home/nome/Scrivania/programma\ gespeaker/gespeaker-0.7
Io non ho omesso nessuno spazio, io ho aperto il terminale direttamente nella cartella, il problema è in fase di compilazione, perché in rules c’é un comando che si prende il percorso e ci aggiunge ‘–install….’ (percorso con spazi –comando –install…), il problema è che lui invece di leggere un solo comando ne legge 2 o 3.
scusa ma davvero non capisco di cosa stai parlando.
la guida alla sezione rules e` questa:
https://ubuntrucchi.wordpress.com/2010/06/18/debianizzare-un-programma-python-12/
non c’e` nessuno spazio e nessun riferimento alla cartella di origine del programma.
spiegati per bene, quello che tu vedi in questo tutorial e` sicuro al 100%, i pacchetti che trovi in debian e ubuntu sono fatti in questa maniera e li ho fatto io personalmente.
se hai cambiato qualcosa nell’uso dovresti spiegarlo.
se hai un problema apri un topic e allega il log COMPLETO della compilazione, comando che hai eseguito incluso.
La guida l’ho seguita alla lettera, tanto che la versione 1 del programma che ho fatto non ha dato problemi, ed era sulla scrivania, la seconda compilazione ha dato:
Adding cdbs dependencies to debian/eclipx.substvars
dh_installdirs -peclipx
cd . && python setup.py install –root=/home/thewisedj/Scrivania/Progetti in elaborazione/Scripts/Eclip-X/Work/eclipx-0.7.2/debian/eclipx/ \
–install-purelib=/usr/lib/python2.6/site-packages/ –prefix=/usr –no-compile -O0 –install-lib=/usr/share/eclipx
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] …]
or: setup.py –help [cmd1 cmd2 …]
or: setup.py –help-commands
or: setup.py cmd –help
error: invalid command ‘in’
make: *** [install/eclipx] Errore 1
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
Riconosce ‘in’ come un comando e quindi interrompe, la riga totale è quella che è scritta come ultima nel rules, infatti alla fine ha l’install che dicevo.
La guida funziona al 100%, ma da qualche parte manca un qualcosa che aggreghi i percorsi se con spazi.
quell’errore non riguarda in nessun modo il file rules ne` il pacchetto, l’errore e` su python-distutils.
difetto gia` noto ma pare non ancora corretto
http://psf.upfronthosting.co.za/roundup/tracker/issue4508
https://bugs.launchpad.net/python-distutils-extra/+bug/586795
se vuoi puoi correggerlo da solo:
gksudo gedit /usr/share/cdbs/1/class/python-distutils.mk
cerca il testo python-install-py e subito sotto troverai
racchiudi il $(DEB_DESTDIR) tra virgolette e dovrebbe funzionare tutto da se` (non copiarlo da qui, wordpress incasina alcuni caratteri).
pare sia un difetto noto e che non sarà risolto, sta proprio nella documentazione ufficiale di cdbs:
http://build-common.alioth.debian.org/cdbs-doc.html
nella documentazione aggiornata hanno corretto la frase cosi`:
http://cdbs-doc.duckcorp.org/en/cdbs-doc.xhtml
tecnicamente dovresti ignorare la mia modifica a python-distutils, forse potrebbe creare altri problemi, anche se non credo.
il loro suggerimento e` di sistemare i percorsi senza spazi.
Perfetto, ti ringrazio, comunque, più che altro, era una segnalazione per la guida 😉