Distribution meines Python-Programmes (deb und rpm)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Hallo, nachdem mein Python Programm problemlos funktioniert, möchte ich es auch anderen zur Verfügung stellen und es daher in Debian und rpm Pakete, wie auch als Quellcodedistribution , verpacken. Bisher hatte ich die Debian Pakete immer von Hand gemacht, aber wenn ich das dann auch noch für die rpm Pakete pflegen müsste, wäre mir das irgendwie zu umständlich.

Ich habe bereits ein wenig über Python Eggs, distuils und setuptools gelesen, jedoch würde ich mir lieber ein wenig Rat hole, bevor ich mich tiefer in einer dieser Tools hinarbeite. Da ich schon einige Zeit für das Programm an sich aufwenden musste, würde ich diesen Schritt der Veröffentlichung gerne so einfach wie möglich halten und suche deshalb eine einfache und schnelle Lösung.

Distuils hat sich dabei schon ganz nett angehört, aber soweit ich das sehen konnte werden Debian Pakete nicht unterstützt? Gibt es vielleicht eine Lösung, mit deb und rpm Pakete Pakete Funktioniert?

Welches Tool ist das richtige? Würde mich über einige nützliche Tipps freuen!
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

der einfachste Weg ist IMHO, wenn du dein Prog in der Tat als Python-Egg über PyPi zur Verfügung stellst.

Zum einen ist das einfacher als zu Paketieren, zum anderen ist die Installation dann auf allen Plattformen (oder zumindest allen Linuxen) gleich, weil man das egg via PIP oder easy_install installieren kann.

Wenn du wirklich Paketieren willst, dann solltest du dich auch direkt als Paketmaintainer eintragen, da in den Paketquellen sonst ganz schnell eine veraltete Version vorhanden ist.

Gruß, noisefloor
lunar

@Trubinial Guru: Es gibt kein Tool, welches automatisch richtige Pakete für alle möglichen Distributionen erstellt. Selbst bei den beiden wichtigen Paketbaudiensten Launchpad und OBS musst Du die Paketspezifikation für alle zu unterstützenden Formate selbst schreiben.

Ich rate Dir aus einiger Erfahrung nachdrücklich davon ab, Binär-Pakete für Distributionen selbst zu warten. Verteile Dein Programm über den Cheeseshop, und erkläre Deinen Nutzern "pip install DEIN-PROGRAMM". Für den Nutzer ist es letztlich egal, welche Paketverwaltung er nutzt.

@noisefloor: Nicht als Egg, sondern als Quelltext-Distribution. Eggs sind tot, "pip" kann sie nicht mal mehr installieren.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Eggs sind tot? Gut zu wissen.

Gibt es irgendwo ein Howto, wie man das jetzt erstellt? Finde da gerade nichts, was irgendwie aktuell oder ausführlich ist.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

http://www.python-forum.de/viewtopic.php?f=21&t=26895

Im Grunde braucht man eine passende setup.py und kann es dann per ./setup.py sdist upload auf den PyPi Server packen (Vorher einmalig registrieren)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

@burli: Wie man was jetzt erstellt? Pakete für den Cheeseshop? "python setup.py sdist upload" eben…
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

lunar hat geschrieben:@burli: Wie man was jetzt erstellt? Pakete für den Cheeseshop? "python setup.py sdist upload" eben…
Naja, was braucht man? Wie muss setup.py aussehen? Die wird sich ja nicht von selbst erstellen, nehme ich an.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:


GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

@burli: Verzeih mir, ich dachte, dass Dir distutils schon ein Begriff wäre, immerhin kennst Du ja auch Eggs.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

jens hat geschrieben:Siehe links aus http://www.python-forum.de/viewtopic.php?f=21&t=26895 ;)
Sorry, bin aus Versehen direkt zu lunars Beitrag gesprungen und hab deinen übersehen.
@burli: Verzeih mir, ich dachte, dass Dir distutils schon ein Begriff wäre, immerhin kennst Du ja auch Eggs.
Ist mir schon ein Begriff. Hatte mir das vor längerer Zeit auch mal angeschaut, aber nicht vertieft. Ansonsten kenne ich Eggs nur als Nutzer zum Beispiel als Plugins von Editra.

Ich weiß jetzt nur noch, dass Eggs ein Zip Archiv von den Sourcen sind. Welche Rahmenbedinungen dafür nötig sind um sie zu erstellen weiß ich nicht mehr, außer das man setuptools bzw distutils dafür benötigt
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Trubinial Guru
User
Beiträge: 117
Registriert: Dienstag 7. April 2009, 13:40

Vielen Dank erstmal für die Antworten!
Das mit PyPi scheint sich interessant an zu hören, aber ich denke, dass ich gerade bei meinem Projekt vorallem auf Debian Pakete zurückgreifen will. Ist es denn möglich von distuils erstellte Quellpakete über die Launchpad in Debian Pakete zu verpacken?
Wenn ja wäre das wohl das kleinere übel, weil ich dann mit distuils bei bedarf auch einfach rpm und Quellpakete erstellen könnte.

Ist das möglich, oder was für Quellpakete muss man bei Launchpad hochladen?
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Welchen Vorteil versprichst du dir denn von Debian Paketen? Wenn du dein Programm als Debian Paket verpackst hast du im günstigen Fall das Problem, dass du die Verwendung deines Programms auf Debian Nutzer beschränkst. Im schlechtesten Fall sogar auf eine bestimmte Version.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
lunar

@Trubinial Guru: Ich wiederhole mich: Es gibt keine Tool, welches aus Quellpaketen automatisch korrekte Debian-Pakete erstellt. Launchpad und OBS übernehmen nur das Bauen der Pakete, nicht aber das Erstellen derselben. Die nötigen Metadaten wie "rules", "control" oder "copyright" (bzw. ".spec" für RPM) musst Du nach wie vor selbst erstellen, und zwar für jede zu unterstützende Distribution.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

mal abgesehen davon, dass Paketbau ziemlich formalistisch und trocken ist, hast du immer den bereits mehrfach erwähnten Nachteil, dass der Release in deinem Paket ziemlich sicher immer dem aktuellen hinterherläuft. Selbst, wenn du dich selber als Paketmaintainer einträgst.

Von daher ist PyPi 1. Wahl. Dann muss der potentielle Nutzer deiner Software mir easy_install oder pip installiert haben (was wiederum in so gut wie allen Distros als Paket vorliegt) und kann dann ganz einfach dein Software installieren.

Gruß, noisefloor
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Der Nachteil von easy_install und pip sei aber auch erwähnt: Der User bekommt nicht automatisch Updates über die Paketverwaltung. Sind ja auch zwei paar Schuh...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

@jens: Das gilt prinzipiell für jedes Programm, welches nicht in den Quellen einer Distribution enthalten ist, also insbesondere auch für Binärpakete, die einfach nur auf der Website zum Download angeboten werden. Binärpakete zu bauen, ändert an diesem „Nachteil“ per se gar nichts.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Da hast du vollkommen recht. Das ist halt der größte Vorteil, wenn das Paket in den Repositories drin ist.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

@jens: Klar, doch darum geht es hier ja eigentlich gar nicht. Schließlich ist es vom Bereitstellen eigener Binärpakete bis zur tatsächlichen Aufnahme in die Quellen von Distributionen mitunter noch ein sehr weiter Weg. Und aufwendig noch dazu, schließlich muss man sich dann auch an alle bei der jeweiligen Distributionen bestehenden Richtlinien halten. Debian und Fedora beispielsweise setzen ihre ziemlich strengen Richtlinien ziemlich streng durch, so dass man Pakete mitunter mehrfach nachbessern muss.
Antworten