2012-02-07 14 views
8

Sto lavorando per impacchettare alcune librerie in un deb con distutils.Distribuzione di moduli Python in un sistema Ubuntu con distutils e deb

Presumibilmente, ho bisogno di avere setup.py configurato correttamente, così come i file appropriati /debian per il deb.

In questo momento, il repository sembra qualcosa di simile:

library_name/ 
__init__.py 
liba.py 
libb.py 
... 

E 'stata aggiunta come dipendenza da altri programmi in modo che possano eseguire from library_name import liba.

Googling rivela qualcosa tra 3 e 5 diversi metodi di distribuzione su Ubuntu, escluso l'approccio easy_install; la documentazione sembra essere in gran parte a pezzi e non aggiornata.

In particolare, cerco di garantire che, indipendentemente dalla versione di Python, la libreria sia posizionata nella directory di sistema corretta. Inoltre, naturalmente, può essere disinstallato o aggiornato senza problemi.

La fine del gioco è di avere un deb su un server locale che viene aggiunto come dipendenza del pacchetto per i nostri altri programmi.

Qual è il modo canonico "facile e diretto" per ottenere questo risultato?

+0

È il pacchetto compatibile sia con 2.xe 3.x? Cioè, stai prendendo di mira entrambi? – nfirvine

+0

@nfirvine: 2.6 + 2.7 –

risposta

2

È possibile utilizzare pkgme per creare i file debian piuttosto velocemente. Per quanto ne so, a differenza di altri strumenti simili come dh-make, il progetto pkgme si basa su plugin, il che significa che quando viene rilevato python le informazioni dal tuo file setup.py vengono estratte correttamente.

Per ulteriori informazioni, è possibile dare un'occhiata a questo recent talk all'evento Ubuntu Developer Week.

2

Ho già combattuto con Python per Ubuntu/Debian, e sono d'accordo, i documenti sono un pasticcio/inesistente/fuorviante: hanno davvero bisogno di una guida rapida per la situazione più semplice possibile.

Bene, eccolo!

Installare gli strumenti. Questo potrebbe essere eccessivo, però:

sudo apt-get install build-essential python-all dh-make devscripts fakeroot 

Inizia con il codice estratto in una directory di nome $packagename-$version, come library_name-0.6.0/, e cd a quella directory. Eseguire qualcosa come dh_make -i -c gpl3 -e [email protected] (vedere dh_make --help per altre opzioni). Se tutto va bene, non avrai errori e creerai un carico di file in ./debian. È possibile ignorare o eliminare ./debian/*.{ex,EX}; quelli sono solo esempi.

probabilmente si dovrebbe esaminare tutti questi file a un certo punto, ma per lo meno, si necessità di modificare./debian/control e ./debian/rules. Dovresti compilare tutti i campi che hanno il controllo, ovvero Description e Homepage.Modificare la riga Package-python-$libname Cambia la tua linea di Depends in control a questo:

Depends: ${misc:Depends}, ${python:Depends} 

Esso assicura che il nostro pacchetto binario python-$libname dipende dalle versioni di Python di cui ha bisogno. (${python:Depends} is a "substvar"; they're created when we build; you can inspect their values after your first build in./Debian/$ packagename.substvars`.)

Modificare la linea in rules da dh [email protected] a dh [email protected] --with python2, preservando la linguetta nella parte anteriore (è un Makefile). Questo fa sì che debhelper usi il suo addon python2; il default è ancora usare pysupport (che è deprecato, ricordi?).

Poi, eseguire il seguente comando nella directory principale fonte:

debuild -us -uc 

Questo costruisce il pacchetto senza firmarlo (qualcosa che si dovrebbe imparare a fare più tardi!). Dovresti vedere alcune linee di setuptools familiari (due volte: una volta per 2.6, una volta per 2.7), pile di add-on di dh_ e altri cruft di costruzione. Alla fine è l'output di lintian, che può rilevare alcuni problemi di packaging comuni; dovresti sistemarli. Molte delle cose di cui lintian e gli amici si lamentano sono solo l'aderenza alle regole della confezione, e se la tua lib è solo interna, sentiti libera di giocare liberamente.

A proposito, This page talks about the deprecation of python-support and python-central

Problemi correlati