Es gibt eine Menge Informationen darüber, aber da "es mehr als einen Weg gibt, eine Katze zu häuten" , scheinen alle Tutorials / Handbücher, die einen Teil des Prozesses abdecken, bestimmte Annahmen zu treffen, die sich von anderen unterscheiden Tutorials, ich habe es immer noch nicht verstanden.
Bisher habe ich das verstanden.
- Mein letztes Ziel sollte es sein, ein "binäres" .deb-Paket zu erstellen. Ein solches Paket ist plattformunabhängig (32/64 Bit), da alle Python-Programme solche sind.
- Um ein "binäres" Paket zu erstellen, muss ich zuerst ein Quellpaket erstellen.
- Um das Quellpaket zu erstellen, kann ich entweder
CDBS
oder verwendendebhelper
. Debhelper ist der empfohlene Weg für Anfänger. - Der Kern der Erstellung eines Quellpakets besteht darin, das
DEBIAN
Verzeichnis im Quellverzeichnis mit einer Reihe von Dateien zu füllen, in denen erläutert wird, wo Dateien kopiert werden müssen, welchen Urheber- und Lizenzierungsschemata sie unterliegen, welchen Abhängigkeiten sie unterliegen usw. - Schritt 4 kann den
dh_make
Befehl weitgehend automatisieren, wenn die Python-Quelle auch ein Distutils-setup.py
Skript enthält.
Nun meine Fragen:
- Ist mein Verständnis des Prozesses korrekt? Fehlt mir etwas oder habe ich mich geirrt?
- Schritt 5 ist für mich wirklich verwirrender: Insbesondere die beiden Punkte, die für mich am dunkelsten bleiben, sind:
- Wie schreibe ich ein
setup.py
Skript, das ein eigenständiges Programm installiert? BEARBEITEN: Mit eigenständigem Programm meine ich ein Programm, das von einem Desktop-Benutzer verwendet werden soll (im Gegensatz zu einem Modul, das ich als eine Sammlung von Funktionen verstehe, die von anderer Software nach dem Import verwendet werden sollen). In meinem speziellen Fall würde ich tatsächlich zwei solche "Programme" benötigen : die Hauptsoftware und ein separates Dienstprogramm ( tatsächlich ein zweites "Programm", das sich im selben Paket wie das andere befinden sollte). - Was sind die Besonderheiten eines solchen Skripts für DEB-Pakete? Die offizielle Dokumentation scheint sich nur mit RPM- und Windows-Dingen zu befassen ...
- Wie schreibe ich ein
Übrigens: Dies sind die besten Informationsquellen, die ich bisher finden konnte. Wenn Sie etwas Besseres haben, teilen Sie es bitte mit! :) :)
- Ubuntus Python-Verpackungshandbuch
- Erstellen eines .deb - Paket von einem Python setup.py (es zeigt die Schritte, aber es nicht erklären sie genug für mich zu folgen)
- Das ShowMeDo-Video zum Thema "Erstellen eines .deb-Pakets aus einem Python-Programm" (es scheint nicht aktuell zu sein und - wenn ich es richtig verstanden habe - erstellt Pakete für den persönlichen Gebrauch, ohne Abhängigkeiten und ohne signiertes Änderungsprotokoll und andere Schlüsseldaten, die es mit der Debian-Richtlinie inkompatibel machen).
setup.py
bisschen. Dies ist vergleichbar mit demautotools
Schritt, den viele GNU C / C ++ - Projekte verwenden, jedoch spezifisch für Python. Dies ist einfacher als es sich anhört, lesen Sie docs.python.org/distutils/index.htmlmain.py
Datei (ich nehme an, Sie nennen es "ein Skript") UND eine Reihe von Modulen UND einige andere YAML- und SVG-Dateien ... Ich bin immer noch Schwierigkeiten, eine klare Dokumentation zu finden, wie dies erreicht werden kann. Das Beste, was ich bisher finden konnte, ist das Distutils-Tutorial, das ich noch studiere ...Antworten:
Es sieht so aus, als würde stdeb tun, was Sie wollen.
Für die Installation von Skripten empfehle ich dringend, die Einstiegspunktunterstützung für console_scripts von Distribute zu unterstützen.
quelle
DEBIAN/control
. Gibt es eine Möglichkeit, es zustdeb
nutzen?Dieser Artikel von Barry Warsaw hat mir geholfen, ziemlich weit durch den Prozess zu kommen. Ich musste trotzdem nebenbei viel suchen und habe in der Vergangenheit den größten Teil des Ubuntu-Verpackungshandbuchs gelesen .
Ein gutes zu haben
setup.py
ist ein wirklich guter Rat. Ich fand diese beiden Anleitungen ziemlich gut:quelle
Die richtige Art, ein Deb-Paket zu erstellen, ist die Verwendung
dpkg-buildpackage
, aber manchmal ist es etwas kompliziert. Stattdessen können Sie verwendendpkg -b <folder>
, und es wird Ihr Debian-Paket erstellen.Dies sind die Grundlagen zum Erstellen eines Debian-Pakets mit einer
dpkg -b <folder>
beliebigen Binärdatei oder einem beliebigen Skript, das automatisch ausgeführt wird, ohne dass eine manuelle Kompilierung erforderlich ist (Python, Bash, Perl und Ruby):Erstellen Sie die Dateien und Ordner, um die folgende Struktur wiederherzustellen:
Die unter platzierten Skripte
/usr/bin/
werden direkt vom Terminal aufgerufen. Beachten Sie, dass ich dem Skript keine Erweiterung hinzugefügt habe. Sie können auch feststellen, dass die Struktur des Deb-Pakets die Struktur des Programms ist, sobald es installiert ist. Wenn Sie also dieser Logik folgen, wenn Ihr Programm eine einzelne Datei enthält, können Sie diese direkt unter platzierenProgramName-Version/usr/bin/your_script
. Wenn Sie jedoch mehrere Dateien haben, sollten Sie diese unterProgramName-Version/usr/share/ProgramName/all your files
und nur eine Datei unter platzieren/usr/bin/
, von der aus Ihre Skripte aufgerufen werden/usr/share/ProgramName/
Ändern Sie alle Ordnerberechtigungen in root:
Ändern Sie die Berechtigungen des Skripts:
chmod 0755 /path/to/the/script
Endlich können Sie ausführen:
dpkg -b /path/to/the/ProgramName-Version
und Ihr Deb-Paket wird erstellt! (Sie können auch die Post / Pre-Inst-Skripte hinzufügen und alles, was Sie wollen, funktioniert wie ein normales Debian-Paket.)Hier ist ein Beispiel für die
control
Datei. Sie müssen es nur kopieren, in eine leere Datei namens "control" einfügen und in den Ordner DEBIAN legen.quelle
Es gibt mehrere Bibliotheken, die alle erforderlichen Schritte abstrahieren und es Ihnen ermöglichen, Ihr Python-Paket mit einem einzigen Befehl in ein Debian-Paket umzuwandeln.
Angenommen, Ihr Python-Paket verfügt bereits über Folgendes
setup.py
: In dem Verzeichnis, in dem sich das Paketsetup.py
befindet, können Sie Folgendes verwenden:stdeb (Bereits in dieser Antwort erwähnt , installieren mit
pip install stdeb
). Führen Sie Folgendes aus, um ein Debian-Paket zu erstellen:Die Ausgabedatei
.deb
befindet sich imbdist_deb
Verzeichnis.fpm (installieren mit
gem install --no-ri --no-rdoc fpm
). Führen Sie Folgendes aus, um ein Debian-Paket zu erstellen:py2deb (installieren mit
pip install py2deb
). Führen Sie Folgendes aus, um ein Debian-Paket zu erstellen:Jede dieser Bibliotheken hat ihre eigenen Einschränkungen. Vielleicht möchten Sie ausprobieren, was für Sie am besten funktioniert.
quelle
Diese Methode funktioniert bei mir.
installiere stdeb. (pip install stdeb)
erstelle setup.py. Ich benutze PyCharm. Dadurch werden diese Befehle ( https://www.jetbrains.com/help/pycharm/creating-and-running-setup-py.html ) in Ihr Projektverzeichnis geschrieben.
quelle