Ich möchte eine DEB-Datei manuell erstellen. Ich möchte nur einen Ordner bereitstellen, der zu installierende Daten enthält, und ein Skript, das nach der Installation ausgeführt wird.
@ David, eigentlich habe ich es mit "dpkg-deb" geschafft, es ist viel einfacher, deshalb habe ich mich für Gilles entschieden, indem ich die Dateien im Paketordner auflistete, um mir einen klaren Überblick über die zu platzierenden Dateien zu verschaffen. Also ich denke , seine Antwort besser ist ..
Daisy
Ich habe auch alle Dateien im Paket aufgelistet.
Gigamegs
11
@ David Ich meine, zu argumentieren, dass seine Antwort abgeleitet ist, ist eine Sache, aber "keine sehr gute Antwort"? Gilles 'Antwort ist ausgezeichnet; Es spielt keine Rolle, ob Ihre Antwort die erste war, seine ist weitaus vollständiger. Und es ist nichts Falsches daran, eine bestehende Antwort zu nehmen und darauf zu erweitern. Das ist eine gute Sache
Michael Mrozek
Antworten:
57
Ein Quellpaket erstellen
Meine Empfehlung ist, ein Quellpaket zu erstellen. Installiere build-essential , debhelper , dh-make . Wechseln Sie in das Verzeichnis, in dem sich die zu installierenden Dateien befinden (der Verzeichnisname muss die Form haben $PACKAGE-$VERSION, z. B. myapp-4.2-1für Ihren ersten Versuch, Myapp V4.2 zu packen), und führen Sie es aus dh_make --createorig. Beantworte die Fragen. Debhelper erstellt die grundlegende Infrastruktur, die zum Erstellen eines Pakets erforderlich ist, indem Dateien in einem Unterverzeichnis namens generiert werden debian, sowohl einige obligatorische Dateien als auch Vorlagen für optionale Dateien. Möglicherweise müssen Sie einige dieser Dateien ändern:
Bearbeiten Sie debian/rules, um zu erstellen, was erstellt und an der richtigen Stelle installiert werden muss. Wenn Sie nur einige Dateien kopieren und keine Dateien kompilieren müssen, bearbeiten Sie die Datei, debian/installum anzugeben, welche Dateien wo installiert werden müssen.
Bearbeiten Sie debian/copyright, um Lizenzinformationen zu Ihrem Paket und Informationen zum Abrufen der neuesten Version (falls relevant) hinzuzufügen.
Bearbeiten debian/changelog, um den Verweis auf einen ITP zu entfernen (dies ist nur relevant, wenn Sie für das Debian-Projekt arbeiten). Benennen Sie sie debian/postinst.exum debian/postinstund fügen Sie dort Ihre Befehle nach der Installation hinzu. Wenn Sie Ihr Paket später aktualisieren, führen Sie den Befehl aus, debchange -ium einen Changelog-Eintrag hinzuzufügen, oder bearbeiten Sie die Datei in Emacs (mit installiertem dpkg-dev-el ).
Führen Sie dies aus dpkg-buildpackage -rfakeroot -us -uc, um das .debPaket zu erstellen (entfernen -us -ucSie es , wenn Sie das Paket mit Ihrem PGP-Schlüssel signieren möchten).
Sie stellen sicher, dass Ihr Paket die erwarteten Dateien installiert /usr/share/doc/copyright(einschließlich der Lizenz des Paketinhalts sowie /usr/share/doc/changelog.Debian.gzder Position, an der sich die neueste Version des Pakets befindet) und (einschließlich des Änderungsprotokolls des Deb-Pakets). Sie benötigen diese nicht, wenn Sie das Paket nur intern verwenden möchten, aber es ist besser, sie zu haben.
Auf Debian und Derivaten
Wenn Sie die Debian-Werkzeuge zur Verfügung haben, verwenden Sie dpkg-deb, um das Paket zu erstellen. Fügen Sie in dem Verzeichnis, das die zu installierenden Daten enthält, ein Verzeichnis hinzu, das DEBIANauf der obersten Ebene aufgerufen wird und die Steuerdateien und Betreuerskripten enthält.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Der harte Weg
Wenn Sie nicht über die Debian-Werkzeuge verfügen, erstellen Sie ein Archiv der zu paketierenden Dateien data.tar.gz, ein separates Archiv der aufgerufenen Steuerdateien control.tar.gz(keine Unterverzeichnisse) und eine Textdatei debian-binarymit dem Namen und dem Inhalt des Texts 2.0.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Sie benötigen mindestens eine Steuerdatei mit den Feldern Package, Maintainer, Priority, Architecture, Installed-Size, Version, und jede notwendige Abhängigkeitserklärung.
Das nach der Installation auszuführende Skript wird aufgerufen postinst. Stellen Sie sicher, dass es ausführbar ist. Es geht nebenher control.
Konvertieren eines Binärpakets aus einem anderen Format
Wenn Sie bereits ein Binärpaket aus einer anderen Distribution haben, können Sie es mit alien konvertieren.
IMO ist es eine Kopie von meiner Antwort? Was denkst du?
Gigamegs
1
Die Antwort setzt voraus, dass das OP weiß, wie man Emacs benutzt. Ist Emacs hier wirklich nötig? Zum Editieren von Changelogs kann man meiner Meinung nach verwenden dch -i.
Faheem Mitha
Was armacht das tarnicht?
MMSTICK
@mmstick Es ist ein anderes Format. Ich weiß nicht, warum sich die Designer des deb-Formats für eine Verwendung hier entschieden haben.
Gilles 'SO- hör auf böse zu sein'
1
Wenn Sie den Namen ändern möchten , und dass E - Mail dh_make --createorigverwendet, müssen Sie export DEBEMAIL="[email protected]"und export DEBFULLNAME="Firstname Lastname"vorher.
Ryan
10
Zunächst müssen Sie einen Erstellungsordner und ein Archiv Ihrer Dateien erstellen: tar czvf data.tar.gz files
Dann müssen Sie im Build-Ordner eine Steuerdatei mit den gewünschten Informationen erstellen:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <[email protected]>
Description: This is optional, but creates warnings if left out
Anschließend können Sie unabhängig voneinander Preinst-, Postint-, Prerm- und Postrm-Shell-Skripte hinzufügen, um das Verhalten der .deb-Datei vor und nach der Installation sowie vor und nach dem Entfernen zu steuern. Anschließend können Sie das Steuerarchiv mit tar erstellen: tar czvf control.tar.gz control preinst postinst prerm postrm
Dann brauchen Sie einen debian-Binärdatei: echo 2.0 > debian-binary. In Ihrem Build-Ordner sollten Sie nun folgende Dateien haben: debian-binarycontrol.tar.gzund data.tar.gz.
Schließlich benötigen Sie ein arPaket, um die .deb-Datei zu erstellen:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
Darüber ar -r xxx.deb debian-binary control.tar.gz data.tar.gzkönnte es sich lohnen zu betonen, dass die Reihenfolge wichtig ist: Kontrolle muss vor Daten kommen.
Hibou57
@Bytemain, die am häufigsten gewählte Antwort basiert zwar teilweise auf Ihrem Text, fügt jedoch Details hinzu und ist besser lesbar. Die Sequenz, die wir kopieren / einfügen können, macht es besonders ansehnlich.
Mariotomo
3
Ich mache viele Pakete, und ein vollständiges zu machen, ist keine triviale Angelegenheit. Positiv ist zu vermerken, dass Dateien und Skripte viel weniger Arbeit erfordern. Sie können ein solches Paket sehr einfach mit einem Tool namens debreate erstellen .
Debreate ist eine wirklich einfache GUI, mit der Sie einfach DEB-Pakete erstellen können. Sie können einfach angeben, welche Dateien wo abgelegt werden und ob / was nach / vor der Installation / Deinstallation ausgeführt werden soll. Früher habe ich alle meine Pakete auf die übliche Weise erstellt, aber nachdem ich dieses Tool verwendet habe, werde ich nur zurückkehren, wenn dies erforderlich ist.
Stieß mit Zimbra 7 auf Debian mit seinen Ubuntu-Paketen darauf. (Ich bin hartnäckig, ich mag Debian> bUbuntu, obwohl Zimbra nur für Ubuntu veröffentlicht wurde.) Ich bin mir nicht sicher, wie ich das vorher umgangen habe.
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
Alle Ihre neuen .deb-Dateien befinden sich in new/.
Hinweis : Dies war auf Squeeze - Dpkg auf Wheezy hat --Force-Bad-Version jetzt.
Zum schnellen Erstellen von Paketen können Sie das Programm checkinstall verwenden. Es installiert ein Programm, beobachtet Änderungen - und erstellt daraus ein Deb- oder RPM-Paket.
Dies klingt nach einer großartigen Option zum Verfolgen von Paketen, die Sie aus dem Quellcode installieren müssen. Können Sie weitere Details anbieten? ZB können Sie im Verlauf der Installation Symlinks ändern, Dateien löschen, Konfigurationsdateien bearbeiten, Daemons hinzufügen usw. Inwieweit verfolgen die Empfänger die Checkinstall-Funktion und machen diese Änderungen rückgängig? Können Sie die Ausgabe leicht ändern, um Prerm- und Postrm-Skripte hinzuzufügen?
AatG
schau auf wiki.debian.org/CheckInstall Wenn du Dinge während der Installation ändern willst, ist der einfachste Weg, Makefile zu modifizieren, um den Installationsabschnitt zu ändern. prerm / postrm - ich habe keine Möglichkeit gefunden, es zu ändern. Es ist nur für kleine Programme, um eine einfache Deinstallation zu ermöglichen.
Antworten:
Ein Quellpaket erstellen
Meine Empfehlung ist, ein Quellpaket zu erstellen. Installiere build-essential , debhelper , dh-make . Wechseln Sie in das Verzeichnis, in dem sich die zu installierenden Dateien befinden (der Verzeichnisname muss die Form haben
$PACKAGE-$VERSION
, z. B.myapp-4.2-1
für Ihren ersten Versuch, Myapp V4.2 zu packen), und führen Sie es ausdh_make --createorig
. Beantworte die Fragen. Debhelper erstellt die grundlegende Infrastruktur, die zum Erstellen eines Pakets erforderlich ist, indem Dateien in einem Unterverzeichnis namens generiert werdendebian
, sowohl einige obligatorische Dateien als auch Vorlagen für optionale Dateien. Möglicherweise müssen Sie einige dieser Dateien ändern:debian/rules
, um zu erstellen, was erstellt und an der richtigen Stelle installiert werden muss. Wenn Sie nur einige Dateien kopieren und keine Dateien kompilieren müssen, bearbeiten Sie die Datei,debian/install
um anzugeben, welche Dateien wo installiert werden müssen.debian/copyright
, um Lizenzinformationen zu Ihrem Paket und Informationen zum Abrufen der neuesten Version (falls relevant) hinzuzufügen.debian/changelog
, um den Verweis auf einen ITP zu entfernen (dies ist nur relevant, wenn Sie für das Debian-Projekt arbeiten). Benennen Sie siedebian/postinst.ex
umdebian/postinst
und fügen Sie dort Ihre Befehle nach der Installation hinzu. Wenn Sie Ihr Paket später aktualisieren, führen Sie den Befehl aus,debchange -i
um einen Changelog-Eintrag hinzuzufügen, oder bearbeiten Sie die Datei in Emacs (mit installiertem dpkg-dev-el ).Führen Sie dies aus
dpkg-buildpackage -rfakeroot -us -uc
, um das.deb
Paket zu erstellen (entfernen-us -uc
Sie es , wenn Sie das Paket mit Ihrem PGP-Schlüssel signieren möchten).Ein Binärpaket direkt erstellen
Wenn Sie sich entscheiden, ein Binärpaket direkt zu erstellen, ohne es aus einem Quellpaket zu erstellen, was nicht wirklich einfacher ist, da es nicht so viele Tools gibt, die den Prozess erleichtern, müssen Sie mit dem Format von deb-Paketen vertraut sein. Es ist im Debian Policy Manual beschrieben , insbesondere in Kap. 3 (Format von Binärpaketen) , Kap. 5 (Steuerdateien) , ch. 6 (Installationsskripte) und Anhang B (Manipulation von Binärpaketen) .
Sie stellen sicher, dass Ihr Paket die erwarteten Dateien installiert
/usr/share/doc/copyright
(einschließlich der Lizenz des Paketinhalts sowie/usr/share/doc/changelog.Debian.gz
der Position, an der sich die neueste Version des Pakets befindet) und (einschließlich des Änderungsprotokolls des Deb-Pakets). Sie benötigen diese nicht, wenn Sie das Paket nur intern verwenden möchten, aber es ist besser, sie zu haben.Auf Debian und Derivaten
Wenn Sie die Debian-Werkzeuge zur Verfügung haben, verwenden Sie
dpkg-deb
, um das Paket zu erstellen. Fügen Sie in dem Verzeichnis, das die zu installierenden Daten enthält, ein Verzeichnis hinzu, dasDEBIAN
auf der obersten Ebene aufgerufen wird und die Steuerdateien und Betreuerskripten enthält.Der harte Weg
Wenn Sie nicht über die Debian-Werkzeuge verfügen, erstellen Sie ein Archiv der zu paketierenden Dateien
data.tar.gz
, ein separates Archiv der aufgerufenen Steuerdateiencontrol.tar.gz
(keine Unterverzeichnisse) und eine Textdateidebian-binary
mit dem Namen und dem Inhalt des Texts2.0
.Sie benötigen mindestens eine Steuerdatei mit den Feldern
Package
,Maintainer
,Priority
,Architecture
,Installed-Size
,Version
, und jede notwendige Abhängigkeitserklärung.Das nach der Installation auszuführende Skript wird aufgerufen
postinst
. Stellen Sie sicher, dass es ausführbar ist. Es geht nebenhercontrol
.Konvertieren eines Binärpakets aus einem anderen Format
Wenn Sie bereits ein Binärpaket aus einer anderen Distribution haben, können Sie es mit alien konvertieren.
quelle
dch -i
.ar
macht dastar
nicht?dh_make --createorig
verwendet, müssen Sieexport DEBEMAIL="[email protected]"
undexport DEBFULLNAME="Firstname Lastname"
vorher.Zunächst müssen Sie einen Erstellungsordner und ein Archiv Ihrer Dateien erstellen:
tar czvf data.tar.gz files
Dann müssen Sie im Build-Ordner eine Steuerdatei mit den gewünschten Informationen erstellen:
Anschließend können Sie unabhängig voneinander Preinst-, Postint-, Prerm- und Postrm-Shell-Skripte hinzufügen, um das Verhalten der .deb-Datei vor und nach der Installation sowie vor und nach dem Entfernen zu steuern. Anschließend können Sie das Steuerarchiv mit tar erstellen:
tar czvf control.tar.gz control preinst postinst prerm postrm
Dann brauchen Sie einen debian-Binärdatei:
echo 2.0 > debian-binary
. In Ihrem Build-Ordner sollten Sie nun folgende Dateien haben:debian-binary
control.tar.gz
unddata.tar.gz
.Schließlich benötigen Sie ein
ar
Paket, um die .deb-Datei zu erstellen:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
quelle
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
könnte es sich lohnen zu betonen, dass die Reihenfolge wichtig ist: Kontrolle muss vor Daten kommen.Ich mache viele Pakete, und ein vollständiges zu machen, ist keine triviale Angelegenheit. Positiv ist zu vermerken, dass Dateien und Skripte viel weniger Arbeit erfordern. Sie können ein solches Paket sehr einfach mit einem Tool namens debreate erstellen .
Debreate ist eine wirklich einfache GUI, mit der Sie einfach DEB-Pakete erstellen können. Sie können einfach angeben, welche Dateien wo abgelegt werden und ob / was nach / vor der Installation / Deinstallation ausgeführt werden soll. Früher habe ich alle meine Pakete auf die übliche Weise erstellt, aber nachdem ich dieses Tool verwendet habe, werde ich nur zurückkehren, wenn dies erforderlich ist.
quelle
Sehen Sie sich das Debian-Wiki zum Thema Verpackung an , vielleicht
equivs
(siehe Link) wird Ihren Anforderungen bereits entsprochen.Die Wikipedia-Seite zum
deb
Dateiformat enthält auch viele nützliche Links.quelle
Stieß mit Zimbra 7 auf Debian mit seinen Ubuntu-Paketen darauf. (Ich bin hartnäckig, ich mag Debian> bUbuntu, obwohl Zimbra nur für Ubuntu veröffentlicht wurde.) Ich bin mir nicht sicher, wie ich das vorher umgangen habe.
Alle Ihre neuen .deb-Dateien befinden sich in
new/
.Hinweis : Dies war auf Squeeze - Dpkg auf Wheezy hat --Force-Bad-Version jetzt.
quelle
Zum schnellen Erstellen von Paketen können Sie das Programm checkinstall verwenden. Es installiert ein Programm, beobachtet Änderungen - und erstellt daraus ein Deb- oder RPM-Paket.
quelle
quelle