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!
Distribution meines Python-Programmes (deb und rpm)
- 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
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
@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.
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.
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.
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:
- 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)
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)
@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.lunar hat geschrieben:@burli: Wie man was jetzt erstellt? Pakete für den Cheeseshop? "python setup.py sdist upload" eben…
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Siehe links aus http://www.python-forum.de/viewtopic.php?f=21&t=26895
@burli: Verzeih mir, ich dachte, dass Dir distutils schon ein Begriff wäre, immerhin kennst Du ja auch Eggs.
Sorry, bin aus Versehen direkt zu lunars Beitrag gesprungen und hab deinen übersehen.jens hat geschrieben:Siehe links aus http://www.python-forum.de/viewtopic.php?f=21&t=26895
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.@burli: Verzeih mir, ich dachte, dass Dir distutils schon ein Begriff wäre, immerhin kennst Du ja auch Eggs.
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:
-
- 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?
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?
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:
@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.
- 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
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
@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.
@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.