Bereitstellen von Python-Modulen in einem Ubuntu-System mit distutils und deb

8

Ich arbeite daran, einige Bibliotheken in Debs mit Distutils zu verpacken.

Vermutlich muss setup.py korrekt konfiguriert sein, ebenso wie die entsprechenden /debian -Dateien für die deb.

Im Moment sieht das Repository ungefähr so ​​aus:

%Vor%

Es wird als eine Abhängigkeit zu anderen Programmen hinzugefügt, damit sie from library_name import liba ausführen können.

Beim Googling werden zwischen 3 und 5 verschiedene Methoden zur Bereitstellung auf Ubuntu unterschieden, ohne den Ansatz easy_install ; Die Dokumentation scheint weitgehend in Teilen und veraltet zu sein.

Ich möchte insbesondere sicherstellen, dass die Bibliothek unabhängig von der Python-Version im richtigen Systemverzeichnis abgelegt wird. Natürlich kann es auch problemlos deinstalliert oder aufgerüstet werden.

Das Endspiel soll eine Deb auf einem lokalen Server haben, der als Paketabhängigkeit für unsere anderen Programme hinzugefügt wird.

Was ist der kanonische "einfache und unkomplizierte" Weg, dies zu erreichen?

    
Paul Nathan 07.02.2012, 19:50
quelle

2 Antworten

2

Sie können pkgme verwenden, um die Debian-Dateien schnell zu erstellen. Soweit ich weiß, im Gegensatz zu anderen ähnlichen Tools wie dh-make , basiert pkgme design auf Plugins, was bedeutet, dass wenn Python erkannt wird, die Informationen aus Ihrer setup.py Datei korrekt extrahiert werden.

Weitere Informationen finden Sie in diesem letzten Gespräch im Ubuntu Developer Week Event.

    
jcollado 07.02.2012 20:03
quelle
2

Ich habe schon früher mit Python-Paketen für Ubuntu / Debian gekämpft, und ich stimme zu, die Dokumente sind ein Chaos / nicht existent / irreführend: Sie brauchen wirklich eine Schnellstartanleitung für die einfachste mögliche Situation.

Nun, hier ist es!

Installieren Sie Ihre Werkzeuge. Dies könnte jedoch zu viel werden:

%Vor%

Beginnen Sie mit Ihrem Code ausgecheckt in ein Verzeichnis namens $packagename-$version , wie library_name-0.6.0/ und cd auf dieses Verzeichnis. Führen Sie etwas wie dh_make -i -c gpl3 -e [email protected] (siehe dh_make --help für andere Optionen). Wenn alles gut geht, werden Sie keine Fehler bekommen, und es wird eine Ladung von Dateien in ./debian erstellen. Sie können ./debian/*.{ex,EX} ignorieren oder löschen. Das sind nur Beispiele.

Sie sollten wahrscheinlich alle diese Dateien irgendwann untersuchen, aber mindestens brauchen , um ./debian/control und ./debian/rules zu bearbeiten. Sie sollten alle Template-Felder im Steuerelement ausfüllen, nämlich Description und Homepage . Ändern Sie die Package -Zeile in python-$libname Ändern Sie Ihre Depends -Zeile in control auf diese:

%Vor%

Er stellt sicher, dass unser Binärpaket python-$libname von den benötigten Python-Versionen abhängt. ( ${python:Depends} is a "substvar"; they're created when we build; you can inspect their values after your first build in . / debian / $ Paketname Untervaren '.)

Ändere die Zeile in rules von dh $@ in dh $@ --with python2 und behalte die Registerkarte an der Vorderseite (es ist ein Makefile). Dies führt dazu, dass Debhelper sein python2-Addon verwendet; Der Standard ist weiterhin pysupport (was veraltet ist, erinnern Sie sich?).

Führen Sie anschließend den folgenden Befehl im Quellstammverzeichnis aus:

%Vor%

Dadurch wird das Paket erstellt, ohne es zu signieren (etwas, das Sie später lernen sollten!). Sie sollten einige vertraute setuptools Zeilen sehen (zweimal: einmal für 2.6, einmal für 2.7), Stapel von dh_ Addons und andere Gebäude. Am Ende ist die Ausgabe von Lintian, die einige allgemeine Verpackungsprobleme erkennen kann; Sie sollten diese beheben. Viele der Dinge, über die Lintian und Freunde sich beschweren, sind nur die Einhaltung der Verpackungsregeln, und wenn deine Libs nur intern sind, kannst du sie locker spielen.

Übrigens Diese Seite spricht über die Vernachlässigung von python-support und python-central

    
nfirvine 08.02.2012 01:40
quelle

Tags und Links