Python Programme packetieren (.deb)

  • Hey zusammen,
    nachdem ich bereits sehr viel Erfahrung mit der Programmierung von Python gestüzten Programmen (Shell und GUI) gemacht habe, ist es Zeit, diese auch ordentlich anzubieten. Ich möchte meine Programme meinen Kollegen so anbieten, dass diese das Paket mühelos installieren können. Dazu möchte ich das Programm am liebsten als .deb Paket anbieten. Ich habe bereits sehr viele Tutorials betrachtet und mich auch auf ubuntuusers schlau gemacht.

    Leider scheitere ich aber dabei und möchte euch nun fragen ob der ein oder andere eine Anleitung gescheite besitzt, oder ein anderes Packageformat vielleicht besser wäre. Allternativ kann man sich auch mal zusammensetzen.

    Gruß Jason :)

  • Ich habe früher relativ viel paketiert und kann dir dabei sicherlich helfen.

    Ich würde aber direkt empfehlen, ein Flatpak (wenn grafische Oberfläche vorhanden) oder ein Snap daraus zu machen -> das kannst du universeller anbieten.

    Gerade Python ist ja relativ mühsam mit den Abhängigkeiten. Gerade bei Ubuntu 20.04 wird (wenn ich es im Kopf habe) standardmässig noch python2 mitgeliefert und python3 optional in einer relativ alten Version.

    Hier kannst du dann das Pech haben, dass du quasi alleine für Ubuntu mehrere unterschiedliche DEBs erstellen musst.

    Wenn dir DEB lieber als Flatpak oder Snap ist, würde ich überlegen direkt ein PPA zu erstellen. Dort kannst du das Paket mit unterschiedlichen Abhängigkeiten bauen und als Repository anbieten.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Hey,
    leider darf ich die Programme nicht öffentlich zur Verfügung stellen. Deswegen muss ich eine Lösung in betracht ziehen, welche rein Local angeboten werden kann. geht das bei Flatpack und Snap?

    Wegen der Python Version muss man sich keine Sorgen machen. Die Clients werden von unserem Admin verwaltet und dieser hat mich versichert, dass eine aktuellere Python 3 Version vorhanden ist.

    Ein Repository finde ich etwas Übertrieben. Ich stelle nicht viele Programme bereit und die, welche ich bereitstelle, sind Spezialanwendungen für < 3 Personen.

    Kann man da einen guten Way-to-go herauslesen?

  • Wobei scheiterst du denn genau? Ich hatte das selbe Problem und dann hat mir der Hauke seine zwei Videos dazu gezeigt und dann hats geklappt.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Work-PC: Debian 12 + Gnome | Surface Go2: Ubuntu 24.04 + Surface-Kernel | Server: Ubuntu Server 22.04 | Laptop: Linux Mint 21.2 |

    Raspberry Pi4s: PiOS Lite arm64 | Raspberry Pi5: Ubuntu 24.04 | Steam Deck | Auf Linux seit 2003 | Python-Jünger|

    Mein Tool um das Desktop-Erlebnis auf dem Raspberry Pi zu verbessern: PiGro - Just Click It!

  • Achso das ändert die Sache, ich dachte es ist etwas das du einfach in das breite Internet stellen willst.

    Wenn es exklusiv administrierte Clients sind, macht ein DEB definitiv Sinn. Min. Snap kann man auch lokal anbieten (Flatpak kenne ich mich weniger aus) - aber denke ein DEB ohne Repository reicht da.

    Der einfachste Weg dürfte wahrscheinlich "stdeb" sein.

    Mit

    Code
    pip install stdeb

    Kannst du stdeb installieren.

    Danach in deinem Projektverzeichnis:

    Code
    python setup.py --command-packages=stdeb.command sdist_dsc

    Wenn da durchgelaufen ist solltest du einen neuen Ordner im Verzeichnis mit dem Namen "deb_dist" haben.

    Dann per cd in diesen Ordner navigieren

    Code
    cd deb_dist/<dein_projektname>-<versionsnummer>

    Und dort dann mit DPKG das DEB Paket bauen:

    Code
    dpkg-buildpackage -rfakeroot -uc -us


    Hie rmusst du dich eventuell mit deinem Administrator absprechen. Die Parameter -uc -us stehen für "unsignes changelog" und "unsigned source". Bedeuten die Pakete werden nicht mit einem PGP Schlüssel signiert.

    Es kann sein das eure interne IT solche Pakete signiert haben will, dann musst entsprechend Schlüssel erstellen, der IT den Public Key geben und das Paket mit deinem KEY signieren. Aber um einfach mal ein DEB zu bekommen sollte das reichen..

    Mehr zu stdeb: inkl. Dokumentation und zusätzlichen Parametern: https://pypi.org/project/stdeb/

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!