Ich habe mit einigen Betreuern des Debian-IRC-Kanals irc: //irc.debian.org#debian-mentors gesprochen und genau das Gleiche gefordert , und der allgemeine Konsens war:
Lösung 1:
Das Integrieren von Abhängigkeiten in Ihr Paket durch Kopieren der Quelldateien als einzelne Codebasis wird sehr verpönt. Dies würde den Zweck eines Paketsystems zunichte machen, das Abhängigkeiten, Aktualisierungen, Versionsverwaltung usw. handhabt.
Lösung 3:
Das direkte Herunterladen von Nicht-Debian-Paketen bei der Installation von binary ( .deb
) ist ein ernstes Sicherheitsrisiko, definitiv ein Nein-Nein. Sie könnten die Abhängigkeiten nicht einmal untersuchen, indem Sie die extrahieren deb
, da sie bei der Installation heruntergeladen und installiert werden. Dieser Ansatz umgeht das Repository-System vollständig. Kein betroffener Benutzer würde sich über ein Paket freuen, das hinter den Kulissen (und wie root
gesagt!) Zusätzliche nicht vertrauenswürdige Software von nicht vertrauenswürdigen Quellen herunterlädt. Ja, dazu müsste man sich mit DEBIAN/postinst
(oder preinst
) beschäftigen und ein wget
(oder, in Ihrem Fall,pip install
), und das ist der Ansatz von Flash, Oracle Java, Steam und anderen. Das ist jedoch proprietäre, geschlossene Quellensoftware, sodass ihre Sicherheit sowieso keine ist.
Lösung Nr. 1.5:
Sie haben es nicht erwähnt, aber man konnte die Abhängigkeiten nur integrieren Build - Zeit , dh in der Quelle - Paket (die .orig.tar.gz
, .debian.tar.gz
, .dsc
Trias), indem sie von PyPI Download , wenn die „binäre“ Paket (das Erstellen .deb
). Die Anweisungen für die pip install
gehen in debian/rules
(beachten Sie die Kleinbuchstaben debian
im Gegensatz zum Binärpaket) und werden ausgeführt, wenn Sie debuild
oder ausgeben dpkg-buildpackage
.
Dies ist ein Mittelweg zwischen # 1 und # 3. Dies mindert (aber nicht löst!) Einige der Probleme von Nummer 3: Zumindest können Sie das Endprodukt überprüfen und .deb
benötigen zum Zeitpunkt der Installation keinen Internetzugang. Alle Risiken und Belastungen gehen vom Endverbraucher auf den Paketbetreuer über. Es hat jedoch die gleichen Probleme wie Nummer 1, da es den größten Teil der Verpackungssysteminfrastruktur umgeht. Der Umgang mit Abhängigkeiten (Versionen, Updates, Anforderungen, Konflikten) ist schließlich der Grund, warum dpkg
/ apt
wurde in erster Linie erstellt! :)
Lösung 2:
Der einzig wahre richtige Weg ™ . Sie erstellen Debian-Pakete für Ihre Abhängigkeiten, listen sie als Anforderungen in Ihrem Paket auf und versenden alle .debs
oder Quellpakete.
Von dort haben Sie eine Reihe von Optionen:
Senden Sie die Quellpakete, sowohl Ihre Software als auch deren Abhängigkeiten, zur Einbindung in Debian. Wenn sie akzeptiert werden, stehen sie automatisch allen Debian-Benutzern zur Verfügung, einschließlich aller Derivate wie Ubuntu.
Laden Sie die Quellpakete auf Launchpad hoch und erstellen Sie so eine PPA , die jeder Ubuntu-Benutzer (und seine Derivate wie Linux Mint) problemlos hinzufügen und installieren kann
Hosten Sie Ihr eigenes Debian-Repository auf Ihrer Website, das Benutzer von jedem Debian-basierten System hinzufügen /etc/apt/sources.list.d
und die apt
Infrastruktur zum Herunterladen, Installieren und Aktualisieren verwenden können (wie oben beschrieben!).
Hosten Sie die .deb
Dateien für den direkten Download und die Installation. Keine apt
oder automatische Updates erforderlich.
Was , wie Ihre PyPI Abhängigkeiten (! Und Ihre Python Software auch) zu verpacken, gibt es eine Reihe von Tools und Referenzen, die den Prozess einfach zu machen:
stdeb , wie du schon sagtest . Oldie und Goodie.
Pybuild , ein neues, erstaunliches Tool von Debian, das ersetzt stdeb
.
Und viele nützliche Hinweise:
Brauche Hilfe? Schauen Sie sich diese an: